鉴于此输入:
ESAS NO :2005-238
这两个正则表达式不匹配:
esas\s+(no)?\s*:([^\w]+)
esas\s+(no)?\s*:([\W]+)
但是这个匹配:
esas\s+(no)?\s*:([^a-zA-Z]+)
我认为以上所有会/应该表现得一样,但事实并非如此。这些之间有什么区别?
答案 0 :(得分:6)
\w
匹配任何字母数字字符,包括数字,即它与[A-Za-z0-9_]
和/大致相同,但可能取决于区域设置。
答案 1 :(得分:1)
查看\w
的说明:
\w A word character is a character from a-z, A-Z, 0-9, including the _ (underscore) character.
\W The negated version of \w
这意味着您可以使用\W
或[^\w]
明确排除[a-zA-Z0-9_]
。请注意,0-9
已从匹配集中排除,但在您的字符串中,您需要匹配数字。