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

Bra*_*raj 7 java regex

当我回答这篇文章以匹配除字母数字之外的ASCII字符时,我有一个问题.

这是我尝试过的但是不正确.

(?=[\x00-\x7F])[^a-zA-Z0-9]
Run Code Online (Sandbox Code Playgroud)

regex101演示

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

谢谢


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

oin*_*ink 1

正则表达式解析器会查找字符串中的每个字符并使用正则表达式对其进行检查。

\n\n

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

\n\n

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

\n\n

所以它完全按照你的指示去做;也就是说,匹配任何非字母数字 ASCII 字符。

\n\n

它不匹配\xc2\xa3\xc2\xa3\xc2\xa3\xc2\xa3\xc2\xa3A$\xc2\xa3\xc2\xa30#$%因为\xc2\xa3不是 ASCII。如果您想匹配任何非字母数字字符,您可能正在寻找以下正则表达式:

\n\n
`[^a-zA-Z0-9]`\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n