I have recently been using regexes in a program. In this program I used them to find words in a list of words that matched a certain RE. However, when i tried backreferencing with this program, I got an interesting result.
Here is the code:
import re
pattern = re.compile(r"[abcgr]([a-z])\1[ldc]")
string = "reel reed have that with this they"
print(re.findall(pattern, string))
What I expected was the result ["reel","reed"]
(the regex matched these when I used it with Pythex)
However, when I ran the code using python (I use 3.5.1) I got the following result:
['e','e']
Please can someone with more experience with REs explain why I am getting this problem and what I can do to resolve it.
Thank you.
The
re.findall
only returns captured values captured with capturing groups inside the regex pattern.Use
re.finditer
that will keep the zeroth group (the whole match):See the IDEONE demo