我最近一直在程序中使用正则表达式.在这个程序中,我用它们在与某个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)])