2016-05-29 127 views
2

我最近一直在程序中使用正則表達式。在這個程序中,我使用它們來查找與某個RE匹配的單詞列表中的單詞。但是,當我嘗試使用此程序進行反向引用時,我得到了一個有趣的結果。正則表達式反向引用findall不起作用

下面是代碼:

import re 
pattern = re.compile(r"[abcgr]([a-z])\1[ldc]") 
string = "reel reed have that with this they" 
print(re.findall(pattern, string)) 

我預料到的結果["reel","reed"](正則表達式匹配這些當我Pythex用它)

然而,當我使用python運行的代碼(我使用3.5.1),我得到了以下結果:

['e','e']

請某人有更多experien用RE解釋我爲什麼會遇到這個問題,以及我能做些什麼來解決它。

謝謝。

+0

pythex給了相同的結果...'e'和'e' .... –

+0

@ TadhgMcDonald-Jensen抱歉,我的意思是當我嘗試簡單地將正則表達式與「卷軸」和「蘆葦」相匹配時,我沒有嘗試在Pythex中使用findall。 –

+0

可能的重複 - http://stackoverflow.com/questions/8110059/python-regex-search-and-findall – SilentMonk

回答

2

re.findall只返回在正則表達式模式中用捕獲組捕獲的捕獲值

使用re.finditer將保持零組(整場比賽):

import re 
p = re.compile(r'[abcgr]([a-z])\1[ldc]') 
s = "reel reed have that with this they" 
print([x.group(0) for x in p.finditer(s)]) 

IDEONE demo