想要匹配非拉丁字符。试了一下。根据我的理解if (a.matches("[\\x8A-\\xFF]+"))
应该返回true,但它是错误的。
String a = "Ž";
if (a.matches("[\\x8A-\\xFF]+"))
{
}
答案 0 :(得分:3)
从你的头衔来看:
正则表达式将非拉丁字符与ASCII 0-31和128-255匹配
看起来除了32-127范围内的所有角色之外,你们都在追逐所有角色,而且你们很惊讶Ž不匹配。
如果这是正确的,我建议您使用表达式[^\x20-\x7F]
(“除32-127范围内的所有字符)。 匹配Ž。
(标题中正则表达式的精确翻译看起来像[\x00-\x1F\x80-\xFF]
,但这仍然与Ž不符,如下所述。)
为什么您的初步尝试无效:
\xNN
匹配字符 unicode值。 Ž的unicode值为0x017D,即超出范围\x8A
- \xFF
。
当您说“Ž”是8E 时,您很可能会看到扩展ASCII表中的值,而这些值不是Java正则表达式引擎使用的值。