1

我正在尝试获取一些亚马逊商品的 ASIN。我发现了一个模式:ASIN 总是在“/dp/”之后。如何从该字符串中提取 ASIN (B003CP0V6S)?我正在使用红宝石

url = "http://www.amazon.it/Calvin-Klein-Deluxe-K0S21120--Orologio/dp/B003CP0V6S/ref=lp_1597641031_1_8?ie=UTF8&qid=1349983393&sr=1-8"
4

3 回答 3

5
str = "http://www.amazon.it/Calvin-Klein-Deluxe-K0S21120--Orologio/dp/B003CP0V6S/ref=lp_1597641031_1_8?ie=UTF8&qid=1349983393&sr=1-8"
(match = str.match(/\/dp\/([^\/]*)/)) && match[1]
# => "B003CP0V6S"
于 2012-10-11T19:50:01.873 回答
2

有些人喜欢在编写用于 URL 的 Ruby 正则表达式时使用替代语法,因为斜线字符的所有转义都会妨碍可读性。将正则表达式括在%r{}其中可以使正斜杠不转义。

  str = "http://www.amazon.it/Calvin-Klein-Deluxe-K0S21120--Orologio/dp/B003CP0V6S/ref=lp_1597641031_1_8?ie=UTF8&qid=1349983393&sr=1-8"
  (str =~ %r{/db/(.+?)/} && $1)
于 2012-10-11T20:28:25.543 回答
0
url.split("/dp/").last.split("/", 2).first

应该做。

于 2012-10-11T21:35:47.313 回答