2016-05-29 33 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