为什么下划线(_)不被视为非单词字符?此正则表达式\ W匹配所有非单词字符,但不匹配下划线。
答案 0 :(得分:5)
参考Jeffrey Friedl关于正则表达式的书,这是Perl正则表达式的一个变化,最初。回到1988年,根据允许命名Perl变量的字符[第89页]:
Perl 2于1988年6月发布.Larry取代了正则表达式代码 完全,这次使用亨利的大大增强版本 上一节中提到的Spencer包。你还可以 最多有九组括号,但现在你可以使用
sudo rm -rf /usr/share/elasticsearch/data/
在他们里面。添加了对|
和\d
的支持,并且对\s
的支持是 改为包括下划线,从那以后它会匹配什么 Perl变量名中允许使用字符。
答案 1 :(得分:2)
\W
is defined as [^A-Za-z0-9_]
它与\w
相反,是[A-Za-z0-9_]
,意思是“一个字符”。
当你用口语感知它们时,它不是关于单词的。这里的“单词”表示标识符。大多数编程语言在标识符中允许(大写和小写)字母,数字和下划线(_
)。
答案 2 :(得分:-1)
根据regex101:\W matches any non-word character (equal to [^a-zA-Z0-9_])
。这似乎是一个设计师'选择。
答案 3 :(得分:-1)
“单词字符”定义基于可在许多编程语言中用作标识符一部分的字符,即[A-Za-z0-9 _]。