我想知道RegEx.IsMatch的结果是否受编码影响。
我正在使用正则表达式模式检查字符串是否包含在另一个字符串中。
我99.9%确定模式是正确的,所以我的问题是......
与Regex.IsMatch的匹配测试是应用于“字节级别”还是“字符串级别”?
更新:
这是输出... TEΣT
这是要匹配的词...... ΤΕΣΤ
这是模式......
If Regex.IsMatch(Output, "(?<=^|\b|\s)" & Regex.Escape(Word) & "(?=\s|\b|$)") Then
'dooooo
end if
答案 0 :(得分:2)
.NET中的所有Regex函数都使用字符串而非字节编码。
如果您遇到问题,可能是因为您的字符串被错误解码,因此字符串中的某些字符不是正确的字符。如果你可以发布你的字符串和正则表达式,我们可以解释它为什么不匹配。
答案 1 :(得分:1)
正则表达式具有文化意义,因此它使用当前的文化,例如何时决定如何处理案例感。
您可以使用选项RegexOptions.CultureInvariant
将其关闭。这导致它使用中性文化。正则表达式仍然适用于字符级别,但字符串是16位代码点,它不是字节。