Paddy schrieb: > On Apr 16, 10:50 am, Thomas Dybdahl Ahle <[EMAIL PROTECTED]> 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.
This doesn't answer the question if two of the sub-expressions matched. Diez -- http://mail.python.org/mailman/listinfo/python-list