On 2006-07-16, Avi Kak <[EMAIL PROTECTED]> wrote: > Folks, > > Does regular expression processing in Python allow for executable > code to be embedded inside a regular expression? > > For example, in Perl the following two statements > > $regex = qr/hello(?{print "saw hello\n"})mello(?{print "saw > mello\n"})/; > "jellohellomello" =~ /$regex/; > > will produce the output > > saw hello > saw mello > > Is it possible to do the same in Python with any modules that come > with the standard distribution, or with any other modules?
You can use sub and make the replacement pattern a function (or any "callable" thing) and it gets called back with the match object: import re def f(mo): if "hello" in mo.groups(): print "saw hello" if "mello" in mo.groups(): print "saw mello" re.sub(r'(hello)(mello)', f, "jellohellomello") Actually I didn't know you could do that in Perl. The time I've found this useful in Python is substitutions to convert e.g. "background-color" into "backgroundColor"; a function turns the c into C. I always assumed in Perl you would need to use eval for this, but perhaps there is another way. -- http://mail.python.org/mailman/listinfo/python-list