为什么下划线不能与'\ W'匹配?
问题内容:
我知道,其他任何标点符号都_
无法与之匹敌\W
。随着文档状态:\w
是一组字母数字字符 和 所述 下划线 。
与此同时:
我一直对此感到困惑,但从未真正质疑为什么。
它与_
Python中扮演的特殊角色有关吗?
问题答案:
模块中许多Python的正则表达式语法re
都来自Perl,这受sed
和的影响awk
。将\w
来自那里,有着悠久的历史。
在原来的regex
模块(这是在Python 1.5弃用),\w
并 没有 包括_
,如从明显的Python
1.4文档
:
\w
匹配任何字母数字字符;这等效于设置
[a-zA-Z0-9]
。
PS虽然不是很方便,但是可以将所有非\w
+_
与字符类匹配[\W_]
。