On Sun, 17 Jun 2007 11:00:58 +0000, Duncan Booth wrote: > The elegant and lazy way would be to change your specification so that $ > characters are escaped by $$ not by backslashes. Then you can write: > >>>> from string import Template >>>> ...
Thanks, however, turns out my specification of the problem was incomplete: In addition, the variable names are not known at compilation time. I just did it that way, this looks fairly easy already: ------------------- import re def variable_sub_cb(match): prepend = match.group(1) varname = match.group(2) value = get_variable(varname) return prepend + value string_re = re.compile(r'(^|[^\\])\$([a-z][\w_]+\b)', re.I) input = r'In this string $variable1 is substituted,' input += 'while \$variable2 is not.' print string_re.sub(variable_sub_cb, input) ------------------- -Samuel -- http://mail.python.org/mailman/listinfo/python-list