Граничная проблема Word в динамическом шаблоне C# regex

Хорошее сообщение, строка

props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

обязательна, если сервер SMTP использует , аутентификация SSL , как сервер SMTP Gmail делает. Однако, если сервер использует Аутентификация Простого текста по TLS, это не должно присутствовать, потому что Почта Java будет жаловаться на начальное соединение, являющееся простым текстом.

Также удостоверяются, что Вы используете последнюю версию Почты Java. Недавно я использовал некоторые старые Почтовые банки Java из предыдущего проекта и не мог заставить код работать, потому что процесс входа в систему перестал работать. После того, как я обновил до последней версии Почты Java, причина ошибки стала ясной: это был javax.net.ssl. SSLHandshakeException, который не был подброшен в старой версии lib.

8
задан Wiktor Stribiżew 28 November 2019 в 08:18
поделиться

1 ответ

Try

string pt = @"\b(" + db.GetPattern + @")\b";

or alternatively:

string pt = string.Concat(@"\b(", db.GetPattern, @")\b");

The basic reason is that the pattern you give as an example and the string you are building are quite different. Things like literal strings, such as @"foo" only matter to the C# compiler, after compilation all strings are equal. The two strings @"\b" and "\\b" are completely equal, the only difference is in how the C# compiler evaluates escape characters inside it. Which means that there is absolutely no need to incorporate C# syntax into strings you use at runtime.

Basically the string you created contained:

@"\b(test|test2)\b"

whereas you wanted the pattern

\b(test|test2)\b

So parts like the @ sign and the quotation marks were literals for the regex. Thus it wouldn't match.

23
ответ дан 5 December 2019 в 07:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: