regex backreference findall not working python
Question: 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](http://pythex.org/))

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.


Answer: The [`re.findall`](https://docs.python.org/2/library/re.html#re.findall) only
returns captured values captured with _capturing groups_ inside the regex
pattern.

Use [`re.finditer`](https://docs.python.org/2/library/re.html#re.finditer)
that will keep the zeroth group (the whole match):

    
    
    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)])
    

See the [IDEONE demo](http://ideone.com/pTZDxg)

