获取此URL的特定部分的ruby正则表达式是什么?

时间:2012-10-11 19:46:14

标签: ruby regex string url

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

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

3 个答案:

答案 0 :(得分: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"

答案 1 :(得分: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)

答案 2 :(得分:0)

url.split("/dp/").last.split("/", 2).first

应该这样做。