Re: [问题] 正规表示法"*?"

楼主: darkk6 (Mr. Pan)   2016-06-06 12:13:59
※ 引述《canamvskid (覚醒図鉴)》之铭言:
: 想请问一下,我用s1 = 'abc',然后 re.findall(r'o*?', s1)
: 得到的结果是 ['', '', '', '']
: 如果是从左到右一个个比对的话不是只有3个吗?
: 为什么最后会多一个出来呢?
我对 Python 运作还不是很了解,但我猜这个和 Python 的 re 的运作方式有关
还有就是 string 的 slicing。
执行底下 Code :
import re
ptn='o*?'
sub='fooood'
p=re.compile(ptn)
iterator = p.finditer(sub);
for match in iterator:
print sub[match.start():match.end()] , match.span()
你会发现他运作的时候会抓出来的范围是
0:0 ==> "fooood"[0:0] = ''
1:1 ==> "fooood"[1:1] = ''
2:2 ==> "fooood"[2:2] = ''
3:3 ==> "fooood"[3:3] = ''
4:4 ==> "fooood"[4:4] = ''
5:5 ==> "fooood"[5:5] = ''
6:6 ==> "fooood"[6:6] = ''
如果按照这个方式来看:
+

Links booklink

Contact Us: admin [ a t ] ucptt.com