我正在研究一個應該匹配一系列作者的小Python腳本,我正在使用re
模塊。我碰到什麼意外,我已經能夠將其降低到下面很簡單的例子:python match只捕獲第一組和最後一組 - 我誤解了什麼?
>>> import re
>>> s = "$word1$, $word2$, $word3$, $word4$"
>>> word = r'\$(word\d)\$'
>>> m = re.match(word+'(?:, ' + word + r')*', s)
>>> m.groups()
('word1', 'word4')
所以我確定我輸入的主要部分匹配的「基本」正則表達式,具有一定的識別特徵(在這種情況下,我使用了$
-signs),並且我嘗試匹配一個單詞加上可能的附加單詞列表。
我會預計m.groups()
會一直顯示:
>>> m.groups()
('word1', 'word2', 'word3', 'word4')
但很顯然,我做錯了什麼。我想知道爲什麼這個解決方案不起作用,以及如何改變它,以便得到我期待的結果。順便說一句,這是在Linux機器上使用Python 2.6.6,以防萬一。
感謝您的建議和額外的解釋 - 「re.DEBUG」是我的一個新選項;很高興知道! –
@JakobvanBethlehem你也應該看看['re.VERBOSE'](http://docs.python.org/library/re.html#re.VERBOSE),它可以讓你拆分正則表達式,添加註釋等,仍然編譯它。基本上,在每行中寫入RE的部分內容,使用習慣的'#'添加註釋(並確保將其放在三個引號中)。當它們特別複雜時,可以使你的RE更具可讀性。 –