3

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

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

}
4

1 回答 1

6

从你的标题来看:

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

看来您毕竟是除 32-127 范围内的字符之外的所有字符,并且您很惊讶 Ž 不匹配。

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

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

为什么你最初的尝试没有奏效:

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

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

于 2015-05-28T07:36:27.260 回答