想匹配非拉丁字符。试过了。根据我的理解 if (a.matches("[\\x8A-\\xFF]+"))
应该返回真,但它是假的。
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 正则表达式引擎使用的值。