我最近在程序中使用了正则表达式。在这个程序中,我用它们在与某个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))
我期望的是结果["reel","reed"]
(当我使用Pythex时,正则表达式匹配这些结果)
但是,当我使用python运行代码时(我使用3.5.1),我得到了以下结果:
['e','e']
请让具有更多RE经验的人解释我为什么会遇到此问题以及我可以采取哪些措施来解决此问题。
谢谢。
答案 0 :(得分:2)
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