findall函數(shù)返回的總是正則表達(dá)式在字符串中所有匹配結(jié)果的列表图张,此處主要討論列表中“結(jié)果”的展現(xiàn)方式殉了,即findall中返回列表中每個元素包含的信息。
1.當(dāng)給出的正則表達(dá)式中帶有多個括號時凌埂,列表的元素為多個字符串組成的tuple拴念,tuple中字符串個數(shù)與括號對數(shù)相同育特,字符串內(nèi)容與每個括號內(nèi)的正則表達(dá)式相對應(yīng)戏售,并且排放順序是按括號出現(xiàn)的順序霸旗。
2.當(dāng)給出的正則表達(dá)式中帶有一個括號時签舞,列表的元素為字符串秕脓,此字符串的內(nèi)容與括號中的正則表達(dá)式相對應(yīng)(不是整個正則表達(dá)式的匹配內(nèi)容)。
3.當(dāng)給出的正則表達(dá)式中不帶括號時儒搭,列表的元素為字符串吠架,此字符串為整個正則表達(dá)式匹配的內(nèi)容。
如下:
>>> import re
>>> s = "adfad asdfasdf asdfas asdfawef asd adsfas "
>>> reObj1 = re.compile('((\w+)\s+\w+)')
>>> reObj1.findall(s)
[('adfad asdfasdf', 'adfad'), ('asdfas asdfawef', 'asdfas'), ('asd adsfas', 'asd')]
>>> reObj2 = re.compile('(\w+)\s+\w+')
>>> reObj2.findall(s)
['adfad', 'asdfas', 'asd']
>>> reObj3 = re.compile('\w+\s+\w+')
>>> reObj3.findall(s)
['adfad asdfasdf', 'asdfas asdfawef', 'asd adsfas']