make RE more cleaver to avoid inappropriate : sre_constants.error: redefinition of group name

aspineux aspineux at gmail.com
Thu Mar 29 10:22:08 EDT 2007


I want to parse

'foo at bare' or '<foot at bar>' and get the email address foo at bar

the regex is

r'<\w+@\w+>|\w+@\w+'

now, I want to give it a name

r'<(?P<email>\w+@\w+)>|(?P<email>\w+@\w+)'

sre_constants.error: redefinition of group name 'email' as group 2;
was group 1

BUT because I use a | , I will get only one group named 'email' !

Any comment ?

PS: I know the solution for this case is to use  r'(?P<lt><)?(?P<email>
\w+@\w+)(?(lt)>)'




More information about the Python-list mailing list