How to know what re.sub took?
Darrell
darrell at dorb.com
Wed Apr 12 17:20:49 EDT 2000
"Per Kistler"
> How to know what has been substituted away, if one does something like:
>
> >>> import re
> >>> rex = re.compile(r"(hans|fred|simon)")
> >>> st = "max hans bill"
> >>> st2 = rex.sub("",st)
> >>> st2
> 'max bill'
>
> It took "hans" away, but how can I learn this automatically?
>
This won't work for stuff like \g<1> in the replacement string.
import re
def sub(pat, repl, string):
areas=[]
def detect(mo, repl=repl, areas=areas):
areas.append(mo.groups())
return repl
return re.sub(pat, detect, string), areas
print sub(r"(hans|fred|simon)","","max hans bill")
('max bill', [('hans',)])
More information about the Python-list
mailing list