匹配除字母数字以外的ASCII字符

时间:2014-08-17 13:02:58

标签: java regex

当我回答post以匹配除字母数字以外的ASCII字符时,我想到了一个问题。

这是我尝试的但是不正确。

(?=[\x00-\x7F])[^a-zA-Z0-9]

regex101 demo

我不是在寻找解决方案,只是想知道,我错了。这个正则表达式的含义是什么?

由于


根据我的理解(?=[\x00-\x7F])用于检查ASCII字符,[^a-zA-Z0-9]用于排除字母数字字符。所以最后它将匹配除字母数字之外的任何ASCII字符。我是对的吗?

1 个答案:

答案 0 :(得分:1)

正则表达式解析器转到字符串中的每个字符并使用正则表达式进行检查。

第一部分(?=...)称为“前瞻”,它会询问下一个字符是否为指定的字符(即[\x00-\x7F])。它没有移动字符指针。

下一部分是说下一个字符不是字母数字,但是 移动字符指针。

所以它正是你告诉它的;也就是说,匹配任何非字母数字的ASCII字符。

它与£中的££££A$££0#$%不匹配,因为£不是ASCII。如果你想匹配任何非字母数字的字符,你可能正在寻找这个正则表达式:

`[^a-zA-Z0-9]`

有关详细信息,请参阅网站上的http://www.regular-expressions.info/lookaround.html和其他网页。