正则 re.findall(r'x?','xy123'),x 重复 0 次是什么意思?
巴扎黑
巴扎黑 2016-11-09 16:47:07
0
1
1008

>>> re.findall(r'xy','xy123') #从源文本 xy123 中找 xy 刚好找到一个。 
['xy'] 
>>> re.findall(r'x','xy123') #从源文本 xy123 中找 x 刚好找到一个。 
['x'] 
>>> re.findall(r'x?','xy123') 
['x', '', '', '', '', ''] 

最后这个实在无法理解, 
从中找 x 重复 0 次或者 1 次,如果 x 重复 1 次,得到 x, 
关键是重复 0 次怎么理解?输出的结果里有 5 个表示空东西的东西,但是源文本 xy123 中没有它啊?!

巴扎黑
巴扎黑

Antworte allen(1)
phpcn_u29

'xy123' 长度为 5 ,所以 re.findall 最多可以在 5 个位置尝试匹配。 
第一个位置是在字符串首,匹配到了 'x'。 
然后跳过匹配到的字符串,移到 'y' 前面,进行第二次匹配尝试,匹配到 ''。 
然后往前移动一个字符,即 'y' 和 '1' 中间,进行第三次匹配尝试,匹配到 ''。 
然后往前移动一个字符,即 '1' 和 '2' 中间,进行第四次匹配尝试,匹配到 ''。 
然后往前移动一个字符,即 '2' 和 '3' 中间,进行第五次匹配尝试,匹配到 ''。 
然后往前移动一个字符,即串尾,结束所有匹配尝试。 

任何文本都包含 ''。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage