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

如何用Regex匹配Amazon链接中dp/后的10位字母数字串(不含dp/)

解决方法:仅提取Amazon ASIN码(排除前缀dp/)

你当前的正则会把前缀dp/也包含在匹配结果里,想要只拿到那10位字母数字的ASIN码,有两种实用的调整方式:

方法1:使用正向回顾后发断言(零宽断言)

这种方式可以让正则确认前面是dp/,但不会把这部分纳入最终的匹配结果:

(?<=dp/)[0-9A-Z]{10}

如果你想保留原来对ASIN开头的限制(仅数字或B),可以改成:

(?<=dp/)[0-9B][0-9A-Z]{9}

原理

(?<=dp/)是正向回顾后发断言,它会检查当前匹配位置的前面是否是dp/,但不会消耗这部分字符,所以后续的正则只会匹配你需要的10位码。

方法2:使用捕获组

如果你的正则工具/编程语言支持捕获组,可以把目标内容放在括号里,之后提取分组的内容:

dp/([0-9A-Z]{10})

同样,替换成你原来的规则就是:

dp/([0-9B][0-9A-Z]{9})

使用示例(Python)

import re
url = "https://www.amazon.com/Tapps-Top-Apps-and-Games/dp/B00VU2BZRO/ref=sr_1_3?ie=UTF8&qid=1527813329&sr=8-3&keywords=poop"

# 提取捕获组内容
match_result = re.search(r'dp/([0-9A-Z]{10})', url)
if match_result:
    asin = match_result.group(1)
    print(asin)  # 输出:B00VU2BZRO

这种方式下,整个正则的匹配结果还是dp/B00VU2BZRO,但你可以通过获取第1个捕获组(group(1))来得到纯ASIN码。

内容的提问来源于stack exchange,提问作者alexev31

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:52:49