Python是否有能力将Match对象用作具有反向引用的字符串的输入,例如:
match = re.match("ab(.*)", "abcd")
print re.some_replace_function("match is: \1", match) // prints "match is: cd"
您可以使用常用的字符串替换函数来实现自己,但我确信明显的实现会遗漏边缘情况,从而导致细微的错误。
答案 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