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