我知道_
无法与\W
匹配,而其他任何标点都可以。
正如文档所述:\w
是一组字母数字字符和 下划线。
同时:
我一直对此感到困惑,但从来没有真正打扰过质疑为什么。
是否与_
在Python中扮演的特殊角色有关?
答案 0 :(得分:4)
模块re
中的许多Python正则表达式语法来自Perl,它是influenced by sed
and awk
。 \w
来自那里并且历史悠久。
在最初的regex
模块(在Python 1.5中已弃用)中,\w
确实不包含_
,{{3} }:
<强>
\w
强>匹配任何字母数字字符;这相当于集合
[a-zA-Z0-9]
。
P.S。虽然不是很方便,但可以将所有非\w
+ _
与字符类[\W_]
匹配。