Regex.IsMatch, применяется на «уровне байтов» или «уровне строк»? - PullRequest
1 голос
/ 21 июля 2010

Я хотел бы знать, не влияет ли кодирование на результат RegEx.IsMatch.

Я проверяю, содержится ли строка в другой, используя шаблон регулярного выражения.

Я на 99,9% уверен, что шаблон правильный, поэтому мой вопрос ...

Соответствующий тест с Regex.IsMatch применяется к «уровню байтов» или «уровню строк»?

ОБНОВЛЕНИЕ:

Это вывод ... TEΣT

Это слово для сопоставления ... ΤΕΣΤ

и вот шаблон ...

If Regex.IsMatch(Output, "(?<=^|\b|\s)" & Regex.Escape(Word) & "(?=\s|\b|$)") Then
'dooooo
end if

Ответы [ 2 ]

2 голосов
/ 21 июля 2010

Все функции Regex в .NET работают со строками, а не с байтовыми кодировками.

Если у вас возникли проблемы, это может быть связано с тем, что ваша строка была декодирована неправильно, поэтому некоторые символы в строке не являются правильными символами. Если вы сможете опубликовать свою строку и регулярное выражение, мы сможем объяснить, почему она не совпадает.

1 голос
/ 21 июля 2010

Регулярные выражения являются культурно-чувствительными, поэтому в них используется текущая культура, например, когда решать, как обрабатывать регистр-чувствительность.

Существует опция RegexOptions.CultureInvariant, которую вы можете использовать для ее отключения. Это заставляет его использовать нейтральную культуру вместо этого. Регулярное выражение по-прежнему работает на символьном уровне, хотя 16-разрядный код представляет собой символ, а не байт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...