diff --git a/src/utils/str.py b/src/utils/str.py index c9a86c21e..819202631 100644 --- a/src/utils/str.py +++ b/src/utils/str.py @@ -298,7 +298,8 @@ def perlReToReplacer(s): regexp = regexp.replace('\x08', r'\b') replace = replace.replace('\\'+sep, sep) for i in range(10): - replace = replace.replace(chr(i), r'\%s' % i) + replace = replace.replace(chr(i), r'\g<%s>' % i) + replace = replace.replace(r'\0', r'\g<0>') g = False if 'g' in flags: g = True diff --git a/test/test_utils.py b/test/test_utils.py index fdefea65e..8c3fcde8e 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -311,6 +311,10 @@ def testPerlReToReplacer(self): self.assertEqual(f('foo'), 'foo/bar') f = PRTR('s/^/foo/') self.assertEqual(f('bar'), 'foobar') + f = PRTR('s/bar/foo\0/') + self.assertEqual(f('bar'), 'foobar') + f = PRTR(r's/bar/foo\0/') + self.assertEqual(f('bar'), 'foobar') def testMultipleReplacer(self): replacer = utils.str.MultipleReplacer({'foo': 'bar', 'a': 'b'})