我有这样的python代码:
a = 'xyxy123'
b = re.findall('x*',a)
print b
结果如下:
['x', '', 'x', '', '', '', '', '']
当b
只有七个字符时,a
如何有八个元素?
答案 0 :(得分:1)
字符串中有八个“斑点”:
| X | Y | X | Y | 1 | 2 | 3 |
每个都是正则表达式可以开始的位置。由于您的正则表达式包含空字符串(因为x*
允许x
的0个副本),因此每个点生成一个匹配项,并且该匹配项将附加到b
中的列表中。例外是开始较长匹配的两个点,x
;就像在msalperen的回答中一样,
结果中包含空匹配,除非它们触及另一场比赛的开头,
因此不包括第一和第三位置的空匹配。
答案 1 :(得分:0)
根据python文档(https://docs.python.org/2/library/re.html):
re.findall返回string中所有非重叠的模式匹配, 作为字符串列表。字符串从左向右扫描,并匹配 按找到的顺序返回。如果有一个或多个组 模式,返回组列表;这将是一个元组列表if 该模式有多个组。空匹配包含在 结果,除非他们触及另一场比赛的开始。
因此它返回与x *匹配的所有结果,包括空的结果。