如何使用REGEX从不同类型的Amazon URL中提取ASIN
提取亚马逊URL中的ASIN解决方案
原正则问题分析
你使用的正则(?:[/dp/]|$)([A-Z0-9]{10})存在两个关键问题:
[/dp/]是字符集匹配,只会匹配/、d、p中的单个字符,而非你需要的/dp/完整路径段;- 未覆盖重定向URL中编码后的路径(如
%2Fdp%2F)或参数里的ASIN(如pd_rd_i=)场景。
改进后的正则表达式
以下正则可兼容常规商品页、重定向页等常见亚马逊URL格式:
(?:\/dp\/|pd_rd_i=|\/dp%2F)([A-Z0-9]{10})
正则各部分说明:
\/dp\/:匹配普通商品URL中/dp/路径后的ASIN;pd_rd_i=:匹配URL参数里pd_rd_i对应的ASIN值(亚马逊链接常通过该参数携带ASIN);\/dp%2F:匹配重定向URL中URL编码后的/dp/路径(%2F是/的URL编码形式);([A-Z0-9]{10}):捕获10位由大写字母和数字组成的ASIN(亚马逊ASIN固定为10位长度)。
验证结果
针对你提供的两个URL:
- 第一个URL提取到ASIN:
B07VDN12QX - 第二个URL提取到ASIN:
B09XHYXH4K
内容的提问来源于stack exchange,提问作者Smith O.
相关产品推荐
相关产品推荐

