我只是想知道如何' 第二个结果中出现空字符串'。
谁能告诉我一步一步发生了什么?
>>> re.split(r'\W*', '...words...')
['', '', 'w', 'o', 'r', 'd', 's', '', '']
如果我没有错,第一个空匹配是因为 python re 模块文档中的这句话:If it matches at the start of the string, the result will start with an empty string. The same holds for the end of the string
最佳答案
见 regex demo at regex101 : .它显示匹配发生的位置。现在,回想一下 re.split
使用匹配值(此处为空字符串,字符串中的位置)拆分字符串,您可以轻松查看拆分发生的位置:
...
找到并发生 split => ['', 'words...']
w
找到了,所以 \W*
匹配前面的空格 => ['', '', 'words...']
o
找到了,所以 \W*
匹配前面的空格 => ['', '', 'w', 'o', 'rds...']
r
找到了,所以 \W*
匹配前面的空格 => ['', '', 'w', 'o', 'r', 'ds...']
d
找到了,所以 \W*
匹配前面的空格 => ['', '', 'w', 'o', 'r', 'd', 's...']
s
找到了,所以 \W*
匹配前面的空格 => ['', '', 'w', 'o', 'r', 'd', 's', '...']
...
找到了,所以 \W*
匹配 => ['', '', 'w', 'o', 'r', 'd', 's', '']
(注意最后一个 ''
不仅仅是空字符串,它是一个空字符串,其结尾位置仍然可以匹配)\W*
匹配此位置 => ['', '', 'w', 'o', 'r', 'd', 's', '', '']
. 关于python - python re模块中split函数的空匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64631146/