想要匹配非拉丁字符。尝试了。根据我的理解,if (a.matches("[\\x8A-\\xFF]+"))应该返回true,但返回false。

String a = "Ž";
if (a.matches("[\\x8A-\\xFF]+"))
{

}

最佳答案

从您的标题来看:


  正则表达式将非拉丁字符与ASCII 0-31和128-255匹配


似乎除了32-127范围内的字符以外,您都在寻找所有字符,您感到惊讶Ž不匹配。

如果正确,我建议您使用表达式[^\x20-\x7F](“除32-127范围内的所有字符外的所有字符”)。确实匹配Ž。

(标题中正则表达式的确切翻译看起来像[\x00-\x1F\x80-\xFF],但这仍然与Ž不匹配,如下所述。)

为什么您最初的尝试不起作用:

\xNN匹配字符unicode值。 Ž的unicode值为0x017D,即它不在\x8A-\xFF范围内。

当您说“Ž”是8E时,您很可能会在扩展的ASCII表中看到一个值,而这些不是Java regex引擎使用的值。

关于java - 正则表达式匹配非拉丁字符与ASCII 0-31和128-255,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30500028/

10-11 05:58
查看更多