当我回答这个帖子以匹配除了字母数字外的ASCII字符时,脑海中出现了一个问题。
以下是我尝试过但不正确的内容。
(?=[\x00-\x7F])[^a-zA-Z0-9]
我不是在寻求解决方案,只是想知道我错在哪里。这个正则表达式模式的含义是什么?
谢谢
根据我的理解,(?=[\x00-\x7F])
用于检查ASCII字符,[^a-zA-Z0-9]
用于排除字母数字字符。因此,它最终将匹配除字母数字以外的任何ASCII字符。我对吗?
当我回答这个帖子以匹配除了字母数字外的ASCII字符时,脑海中出现了一个问题。
以下是我尝试过但不正确的内容。
(?=[\x00-\x7F])[^a-zA-Z0-9]
我不是在寻求解决方案,只是想知道我错在哪里。这个正则表达式模式的含义是什么?
谢谢
根据我的理解,(?=[\x00-\x7F])
用于检查ASCII字符,[^a-zA-Z0-9]
用于排除字母数字字符。因此,它最终将匹配除字母数字以外的任何ASCII字符。我对吗?
(?=...)
被称为“前瞻”,它询问下一个字符是否是指定的字符(即[\x00-\x7F]
),但不移动字符指针。接下来的部分表示下一个字符不是字母数字字符,但移动字符指针。因此,它会精确地执行您要求的操作,即匹配任何非字母数字ASCII字符。它不会在££££A$££0#$%
中匹配£
,因为£
不是ASCII字符。如果您想匹配任何非字母数字字符,您可能正在寻找这个正则表达式:`[^a-zA-Z0-9]`
请访问http://www.regular-expressions.info/lookaround.html以获取更多相关信息。
£
不是 ASCII 字符,但我的问题是关于匹配除字母数字外的 ASCII 字符。因此,应该匹配除 [a-zA-Z0-9]
以外的任何 ASCII 字符。[^a-zA-Z0-9]
也会匹配我不想匹配的 非 ASCII
字符。 - Braj
\A(?:(?=[\x00-\x7F])[^a-zA-Z0-9]))+\z
。 - Casimir et Hippolyte