在Python文档中,我遇到了以下代码片段
>>> re.split('\W+', 'Words, words, words.')
['Words', 'words', 'words', '']
>>> re.split('(\W+)', 'Words, words, words.')
['Words', ', ', 'words', ', ', 'words', '.', '']
令我困惑的是\ W匹配任何不是Unicode字符的字符,但','是Unicode字符。括号是什么意思?我知道它与一组相匹配,但模式中只有一组。为什么','也会回归?
答案 0 :(得分:2)
"任何不是Unicode字符的字符"是一个字符是字的一部分:基本上是字母或数字。
逗号不能成为一个词的一部分。
逗号包含在结果列表中,因为拆分正则表达式用于括号(在拆分正则表达式中定义组)。这就是re.split
的工作原理(这是您的两个代码段之间的区别)