2012-08-14 67 views
8

蟒蛇2.6.8蟒蛇正則表達式的findall和多

s= ''' 
foo 
bar 
baz 
''' 
>>>re.findall(r'^\S*',s,re.MULTILINE) 
['', 'foo', 'bar', 'baz', ''] 
>>>ptrn = re.compile(r'^\S*',re.MULTILINE) 
>>>ptrn.findall(s) 
['', 'foo', 'bar', 'baz', ''] 
>>>ptrn.findall(s,re.MULTILINE) 
['baz', ''] 

爲什麼會出現在使用的findall MULTILINE標誌之間的區別嗎?

回答

15

當調用一個正則表達式的對象上的findall()方法,第二個參數是不flags參數但pos參數(因爲在編譯該正則表達式時已被使用),告訴正則表達式引擎在該點字符串中開始匹配。

re.MULTILINE只是一個整數(碰巧是8)。

參見the docs

+2

好悲傷。你擊敗了我30秒,並且已經有4個upvotes。我永遠不會成爲FGITW :-) – alan 2012-08-14 18:51:10

+0

永遠不會檢查re.MULTILINE是一個對象還是int – kmad 2012-08-14 18:59:09