Leon Hampton <leon_hamp...@yahoo.com> added the comment:

Matthew Barnett & SilentGhost,
Thank you for your prompt responses. (Really prompt. Amazing!)
Regarding your response, I used re.search, not re.match. When I used re.match, 
the regex failed. When I used re.search, it matched.
Here are my tests.

Your example (cut-and-pasted):
x = re.match(r'(<)?(\w+@\w+(?:\.\w+)+)(?(1)>|$)', '<u...@host.com')
I received 'None', the expected response.

My example using search:
x = re.search(r'(<)?(\w+@\w+(?:\.\w+)+)(?(1)>|$)', '<u...@host.com')
I received:
<re.Match object; span=(1, 14), match='u...@host.com'>

I understand the re.match failing, since it always starts at the beginning of 
the string, but why did re.search succeed? After failing with the yes-pattern, 
when the regex engine backtracked to the (<)? did it decide not to match the 
'<' at all and skip the character? Seems like it. What do you think?

I am running Python 3.7 via Spyder 4.1.1 on Windows 10.



Python tracker <rep...@bugs.python.org>
Python-bugs-list mailing list

Reply via email to