Python中的正则表达式反向引用问题

3

我不确定为什么这个不起作用。也许我在Python正则表达式中漏掉了什么。

这是我的正则表达式和我想要匹配的示例字符串:

    PHONE_REGEX        = "<(.*)>phone</\1>"
    EXAMPLE            = "<bar>phone</bar>"

我在单独测试这个匹配时失败了。使用在线正则表达式测试器时已经匹配成功。是不是我忽略了Python正则表达式的特殊性?

谢谢!

1个回答

8

由于其中包含\,您需要将字符串标记为原始字符串,方法是在正则表达式前面加上r:

m = re.match(r"<(.*)>phone</\1>", "<bar>phone</bar>")

好的,谢谢!这是在使用“\”时必须要求吗?还是只有在用于反向引用时才需要? - PFranchise
2
如果第一个参数是变量,请确保所有反斜杠都在其前面加上另一个反斜杠进行转义。以下内容也可以正常工作:"<(.*)>phone</\\1>"。只是在正则表达式中,\具有特殊含义,如果您希望字面上使用\,则需要对其进行转义。 - Simeon Visser

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接