如何在/之间得到消息

时间:2013-10-05 15:27:40

标签: regex

我如何在两个 /

之间找到一个单词
http://www.amazon.fr/Les-cahiers-d%C3%A9criture-n%C2%BA1-Apprentissage/dp/221895608X/ref=zg_bs_3967461_1

我的正则表达式dp/.*?/我得到 dp / 221895608X / ,但我只想 221895608X

3 个答案:

答案 0 :(得分:4)

使用dp/(.*?)/,然后选择匹配的第一个组,而不是整个匹配。

注意:我无法告诉您如何采取第一个匹配组,因为您尚未指定您正在使用的语言。

答案 1 :(得分:2)

当然 - positive lookaheads/lookbehinds

/(?<=\/dp\/).*?(?=\/)/

DEMO

匹配您的字符串。

尸检:

  • (?<=\/dp\/) - 一个积极的观察背后说“匹配必须在它之前有字符串/dp/!”
  • .*? - 懒惰的匹配 - 尽可能少地匹配
  • (?=\/) - 一个积极的预测,说“匹配必须在其后面加上字符串/!”

答案 2 :(得分:0)

如果是JavaScript,您可以使用split('/')来获取包含这些子字符串的数组

var str = 'http://www.amazon.fr/Les-cahiers-d%C3%A9criture-n%C2%BA1-Apprentissage/dp/221895608X/ref=zg_bs_3967461_1';
var arr_str = str.split('/');
var nrarrs = arr_str.length;
alert(arr_str[nrarrs - 2]);     // 221895608X

在PHP中使用explode('/', $str)