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

时间:2015-05-28 07:33:24

标签: java regex non-latin

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

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

}

1 个答案:

答案 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正则表达式引擎使用的值。