當我運行這段代碼:爲什麼不會re.groups()爲我的一個正確匹配的組提供任何內容?
print re.search(r'1', '1').groups()
我得到的()
結果。然而,.group(0)
給了我這場比賽。
不應該groups()
給我一些含有匹配的東西嗎?
更新:感謝您的答案。所以這意味着如果我做re.search()
沒有小組,我有使用groups(0)
得到一個匹配?
當我運行這段代碼:爲什麼不會re.groups()爲我的一個正確匹配的組提供任何內容?
print re.search(r'1', '1').groups()
我得到的()
結果。然而,.group(0)
給了我這場比賽。
不應該groups()
給我一些含有匹配的東西嗎?
更新:感謝您的答案。所以這意味着如果我做re.search()
沒有小組,我有使用groups(0)
得到一個匹配?
由於您沒有任何捕獲組,所以組爲空,因爲您沒有任何捕獲組 - http://docs.python.org/library/re.html#re.MatchObject.groups。組(0)將始終返回匹配的整個文本,而不管它是否被捕獲在一個組中
已編輯。
原因是您沒有捕獲組(因爲您在模式中不使用()
)。 http://docs.python.org/library/re.html#re.MatchObject.groups
而且group(0)
返回整個搜索結果(即使它根本沒有捕獲組): http://docs.python.org/library/re.html#re.MatchObject.group
您的正則表達式沒有組,所以你會得到一個空列表(()
)的結果。
嘗試
re.search(r'(1)', '1').groups()
你創造一個捕獲組,該模式的這一部分匹配的結果括號,存儲在一組。
然後你得到
('1',)
的結果。
據我所知,.groups()
返回想起組的元組。即正則表達式中包含在括號中的那些組。所以,如果你寫:
print re.search(r'(1)', '1').groups()
,你會得到
('1',)
爲你的迴應。一般而言,.groups()
將返回正則表達式中包含在括號內的所有對象組的元組。
這就是'groups'字段,而不是方法 –