You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3正则表达式遇bad escape \g错误,求匹配亚马逊链接的正确写法

解决Python正则匹配亚马逊链接的错误问题

首先,你的报错sre_constants.error: bad escape \g at position 41是因为正则里的\g是无效转义——Python正则语法里根本没有这个写法,这就是直接触发错误的原因。除此之外,你的正则还有几个逻辑问题,我来一步步帮你修正:

错误分析与修正步骤


  1. 移除无效的\g转义:你大概率是想写$(匹配字符串结尾)或者手滑打错了,直接删掉这个错误的转义就能解决报错。
  2. 替换re.match为re.search:re.match只会从字符串第一个字符开始匹配,但你的目标链接在字符串中间,必须用re.search(它会扫描整个字符串寻找匹配项)。
  3. 修正域名后缀的匹配逻辑:[\b"com","ca"]是字符集写法,会把逗号、引号、单词边界符\b都当成要匹配的单个字符,完全无法匹配"com"或"ca"后缀。正确写法是用分组(com|ca)(如果不需要单独捕获后缀,也可以用非捕获组(?:com|ca))。
  4. 删掉多余的\^转义:\^会匹配字面量的^符号,不是你想要的开头锚定(而且你也不需要锚定开头,因为链接在字符串中间),直接移除即可。
  5. 转义域名中的.:amazon.里的.在正则中会匹配任意字符,必须转义成amazon\.才能匹配字面量的点号。

修正后的代码示例


这里提供两种版本,根据你的需求选择:

版本1:捕获完整链接、域名后缀和产品路径

import re

i = "some string wow https://www.amazon.ca/product-product-name"
match_result = re.search(r'https://www.amazon\.(com|ca)(.*)', i)

if match_result:
    print("完整匹配的链接:", match_result.group(0))  # 输出整个链接
    print("域名后缀:", match_result.group(1))          # 输出"ca"或"com"
    print("产品路径:", match_result.group(2))          # 输出后面的/product-product-name

版本2:更严格的链接提取(避免多余内容)

如果你的字符串后面还有其他文本,用\S+匹配非空白字符,确保只提取完整的链接:

import re

i = "some string wow https://www.amazon.ca/product-product-name more text here"
match_result = re.search(r'https://www.amazon\.(?:com|ca)/\S+', i)

if match_result:
    print("提取到的链接:", match_result.group())  # 仅输出https://www.amazon.ca/product-product-name

额外说明


  • 非捕获组(?:com|ca):如果不需要单独获取域名后缀,用这个可以避免创建不必要的捕获组,小幅提升正则性能。
  • \S+:匹配任意非空白字符,能有效防止链接提取时包含后面的空格或无关文本。

内容的提问来源于stack exchange,提问作者W. Reyna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:18:17