正则表达式反向引用 findall 不工作
Regex backreference findall not working
我最近一直在程序中使用正则表达式。在这个程序中,我使用它们在与特定 RE 匹配的单词列表中查找单词。然而,当我尝试使用这个程序进行反向引用时,我得到了一个有趣的结果。
代码如下:
import re
pattern = re.compile(r"[abcgr]([a-z])[ldc]")
string = "reel reed have that with this they"
print(re.findall(pattern, string))
我期望的结果是 ["reel","reed"]
(当我将它与 Pythex 一起使用时正则表达式匹配这些)
但是,当我 运行 使用 python 的代码时(我使用 3.5.1),我得到了以下结果:
['e','e']
请有更多 RE 经验的人解释一下为什么我会遇到这个问题以及我可以采取什么措施来解决它。
谢谢。
re.findall
仅 returns 捕获了正则表达式模式中使用 捕获组 捕获的值。
使用re.finditer
将保留第零组(整场比赛):
import re
p = re.compile(r'[abcgr]([a-z])[ldc]')
s = "reel reed have that with this they"
print([x.group(0) for x in p.finditer(s)])
我最近一直在程序中使用正则表达式。在这个程序中,我使用它们在与特定 RE 匹配的单词列表中查找单词。然而,当我尝试使用这个程序进行反向引用时,我得到了一个有趣的结果。
代码如下:
import re
pattern = re.compile(r"[abcgr]([a-z])[ldc]")
string = "reel reed have that with this they"
print(re.findall(pattern, string))
我期望的结果是 ["reel","reed"]
(当我将它与 Pythex 一起使用时正则表达式匹配这些)
但是,当我 运行 使用 python 的代码时(我使用 3.5.1),我得到了以下结果:
['e','e']
请有更多 RE 经验的人解释一下为什么我会遇到这个问题以及我可以采取什么措施来解决它。
谢谢。
re.findall
仅 returns 捕获了正则表达式模式中使用 捕获组 捕获的值。
使用re.finditer
将保留第零组(整场比赛):
import re
p = re.compile(r'[abcgr]([a-z])[ldc]')
s = "reel reed have that with this they"
print([x.group(0) for x in p.finditer(s)])