python – 正则表达式反向引用找不到工作

我最近一直在程序中使用正则表达式.在这个程序中,我用它们在与某个RE匹配的单词列表中查找单词.但是,当我尝试使用此程序进行反向引用时,我得到了一个有趣的结果.

这是代码:

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

我所期待的是结果[“卷轴”,“簧片”](当我用它与Pythex时,正则表达式匹配这些)

但是,当我使用python(我使用3.5.1)运行代码时,我得到以下结果:

[ ‘E’, ‘E’]

请有更多RE经验的人解释为什么我会遇到这个问题,以及我可以做些什么来解决它.

谢谢.

解决方法:

re.findall仅返回在正则表达式模式内捕获组捕获的捕获值.

使用re.finditer将保留第0组(整个匹配):

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

上一篇:time/requests/hashlib/hmac/re模块


下一篇:hadoop知识点总结