先看一個例子:
import re
string="abcdefg acbdgef abcdgfe cadbgfe"
#帶括號與不帶括號的區別
regex=re.compile("((\w+)\s+\w+)")
print(regex.findall(string))
#輸出:[('abcdefg acbdgef', 'abcdefg'), ('abcdgfe cadbgfe', 'abcdgfe')]
regex1=re.compile("(\w+)\s+\w+")
print(regex1.findall(string))
#輸出:['abcdefg', 'abcdgfe']
regex2=re.compile("\w+\s+\w+")
print(regex2.findall(string))
#輸出:['abcdefg acbdgef', 'abcdgfe cadbgfe']
第一個 regex 中帶有2個括號,我們可以看到其輸出是一個list中包含2個tuple。
第二個 regex 中帶有1個括號,其輸出的內容就是括號匹配到的內容,而不是整個表達式所匹配到的結果。
第三個 regex 中不帶有括號,其輸出的內容就是整個表達式所匹配到的內容。
findall()返回的是括號所匹配到的結果,多個括號就會返回多個括號分別匹配到的結果,
如果沒有括號就返回就返回整條語句所匹配到的結果。
參考鏈接:http://www.imooc.com/article/302796
注:這個特性是正則表達式特有的,而不僅僅只是python語言。