在带有反向引用的字符串中使用Python Match对象

时间:2017-09-12 03:39:12

标签: python regex

Python是否有能力将Match对象用作具有反向引用的字符串的输入,例如:

match = re.match("ab(.*)", "abcd")
print re.some_replace_function("match is: \1", match) // prints "match is: cd"

您可以使用常用的字符串替换函数来实现自己,但我确信明显的实现会遗漏边缘情况,从而导致细微的错误。

1 个答案:

答案 0 :(得分:2)

您可以使用re.sub(而不是re.match)来搜索和替换字符串。

要使用反向引用,最佳做法是使用原始字符串,例如:r"\1"或双转义字符串,例如: "\\1"

import re

result = re.sub(r"ab(.*)", r"match is: \1", "abcd")
print(result)
# -> match is: cd

但是,如果您已经有Match Object,则可以使用expand()方法:

mo = re.match(r"ab(.*)", "abcd")
result = mo.expand(r"match is: \1")
print(result)
# -> match is: cd