I am trying to implement string unescaping with Python regex and backreferences, and it doesn’t seem to want to work very well. I’m sure it’s something I’m doing wrong but I can’t figure out what…
>>> import re >>> mystring = r'This is \n a test \r' >>> p = re.compile( '\\\\(\\S)' ) >>> p.sub( '\\1', mystring ) 'This is n a test r' >>> p.sub( '\\\\\\1', mystring ) 'This is \\n a test \\r' >>> p.sub( '\\\\1', mystring ) 'This is \\1 a test \\1'
I’d like to replace \\[char] with \[char], but backreferences in Python don’t appear to follow the same rules they do in every other implementation I’ve ever used. Could someone shed some light?
Isn’t that what Anders’ second example does?
In 2.5 there’s also a
string-escapeencoding you can apply: