Regex.IsMatch应用于“字节级”还是“字符串级”?

时间:2010-07-21 13:50:56

标签: regex vb.net

我想知道RegEx.IsMatch的结果是否受编码影响。

我正在使用正则表达式模式检查字符串是否包含在另一个字符串中。

我99.9%确定模式是正确的,所以我的问题是......

与Regex.IsMatch的匹配测试是应用于“字节级别”还是“字符串级别”?

更新:

这是输出... TEΣT

这是要匹配的词...... ΤΕΣΤ

这是模式......

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

2 个答案:

答案 0 :(得分:2)

.NET中的所有Regex函数都使用字符串而非字节编码。

如果您遇到问题,可能是因为您的字符串被错误解码,因此字符串中的某些字符不是正确的字符。如果你可以发布你的字符串和正则表达式,我们可以解释它为什么不匹配。

答案 1 :(得分:1)

正则表达式具有文化意义,因此它使用当前的文化,例如何时决定如何处理案例感。

您可以使用选项RegexOptions.CultureInvariant将其关闭。这导致它使用中性文化。正则表达式仍然适用于字符级别,但字符串是16位代码点,它不是字节。