天天看點

python re 子產品 findall 函數

>>> import re

>>> str = "abc1 def2 dcdd3 ieifn4 iner5 iusd6"

>>> reObj1 = re.compile('((\w+)\s+\w+)')

>>> reObj1.findall(str)

[('abc1 def2', 'abc1'), ('dcdd3 ieifn4', 'dcdd3'), ('iner5 iusd6', 'iner5')]

>>> reObj2 = re.compile('(\w+)\s+\w+')

>>> reObj2.findall(str)

['abc1', 'dcdd3', 'iner5']

>>> reObj3 = re.compile('\w+\s+\w+')

>>> reObj3.findall(str)

['abc1 def2', 'dcdd3 ieifn4', 'iner5 iusd6']

>>>

findall函數傳回的總是正規表達式在字元串中所有比對結果的清單,此處主要讨論清單中“結果”的展現方式,即findall中傳回清單中每個元素包含的資訊。

reObj1.當給出的正規表達式中帶有多個括号時,清單的元素為多個字元串組成的tuple,tuple中字元串個數與括号對數相同,字元串内容與每個括号内的正規表達式相對應,并且排放順序是按括号出現的順序。

reObj2.當給出的正規表達式中帶有一個括号時,清單的元素為字元串,此字元串的内容與括号中的正規表達式相對應(不是整個正規表達式的比對内容)。

reObj3.當給出的正規表達式中不帶括号時,清單的元素為字元串,此字元串為整個正規表達式比對的内容。