我在看python正则表达是正则指南时对这里有点不理解
p = re.compile(r'\W+')
p.split('This... is a test.')
结果是
['This', 'is', 'a', 'test', '']
但是预编译改为re.compile(r'(\W+)')
后,输出为什么变为了
['This', '... ', 'is', ' ', 'a', ' ', 'test', '.', '']
()是用来分组的还有其他的作用吗?这个该怎么理解。
加括号后表示分组,会匹配\W+,并捕获匹配的文本到组中
re.split函数的定义,参考python文档7.2. re — Regular expression operations
即被捕获的文本也会被插入结果列表后返回。
加了?:后就不会捕获匹配文本到组中,
re.compile(r'(?:\W+)')
,结果就和第一种情况一样