Compare regular expressions

Paddy paddy3118 at googlemail.com
Mon Apr 16 16:02:03 EDT 2007


On Apr 16, 10:50 am, Thomas Dybdahl Ahle <lob... at gmail.com> wrote:
> Hi, I'm writing a program with a large data stream to which modules can
> connect using regular expressions.
>
> Now I'd like to not have to test all expressions every time I get a line,
> as most of the time, one of them having a match means none of the others
> can have so.
>
> But ofcource there are also cases where a regular expression can
> "contain" another expression, like in:
> "^strange line (\w+) and (\w+)$" and "^strange line (\w+) (?:.*?)$" in
> which case I'd like to first test the seccond and only if it mathces test
> the seccond.
>
> Do anybody know if such a test is possible?
> if exp0.contains(exp1): ...

you could OR all the individual RE's test them all at once then find
out which matched.

big_re = "|".join( r"(?P<__match_%i__>%s)" % (i, r)
                   for i,r in enumerate(regexps) )

now if one of the regexps matches then the corresponding named
group should have a non-empty string value.

- Paddy.




More information about the Python-list mailing list