Python正则表达式拆分为\W

Python正则表达式拆分为\W,python,unicode,Python,Unicode,在Python文档中,我遇到了以下代码片段 >>> re.split('\W+', 'Words, words, words.') ['Words', 'words', 'words', ''] >>> re.split('(\W+)', 'Words, words, words.') ['Words', ', ', 'words', ', ', 'words', '.', ''] 让我感到困惑的是\W匹配的字符不是Unicode单词字符,而是Unicode

在Python文档中,我遇到了以下代码片段

>>> re.split('\W+', 'Words, words, words.')
['Words', 'words', 'words', '']
>>> re.split('(\W+)', 'Words, words, words.')
['Words', ', ', 'words', ', ', 'words', '.', '']
让我感到困惑的是\W匹配的字符不是Unicode单词字符,而是Unicode字符。括号是什么意思?我知道它与一组匹配,但模式中只有一组。为什么“,”也返回?

“任何不是Unicode单词字符的字符”是作为单词一部分的字符:基本上是字母或数字

逗号不能是单词的一部分


逗号包含在结果列表中,因为拆分正则表达式放在括号中(在拆分正则表达式中定义一个组)。这就是
re.split
的工作原理(这就是您的两个代码片段之间的区别)

我明白了。所以逗号是一个Unicode字符,它不是一个单词字符。谢谢