i don't understand this RE example from the documentation

John Salerno johnjsal at NOSPAMgmail.com
Mon May 8 16:41:45 EDT 2006


John Salerno wrote:
> Ok, I've been staring at this and figuring it out for a while. I'm close 
> to getting it, but I'm confused by the examples:
> 
> (?(id/name)yes-pattern|no-pattern)
> Will try to match with yes-pattern if the group with given id or name 
> exists, and with no-pattern if it doesn't. |no-pattern is optional and 
> can be omitted.
> 
> For example, (<)?(\w+@\w+(?:\.\w+)+)(?(1)>) is a poor email matching 
> pattern, which will match with '<user at host.com>' as well as 
> 'user at host.com', but not with '<user at host.com'. New in version 2.4.
> 
> group(1) is the email address pattern, right? So why does the above RE 
> match 'user at host.com'. If the email address exists, does the last part 
> of the RE: (?(1)>) mean that it has to end with a '>'?

I think I got it. The group(1) is referring to the opening '<', not the 
email address. I had seen an earlier example that used group(0), so I 
thought maybe the groups were 0-based.



More information about the Python-list mailing list