0

我怎么能在两个/之间找到一个词

http://www.amazon.fr/Les-cahiers-d%C3%A9criture-n%C2%BA1-Apprentissage/dp/221895608X/ref=zg_bs_3967461_1

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

4

3 回答 3

4

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

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

于 2013-10-05T15:29:20.883 回答
2

当然 -积极的前瞻/后瞻

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

演示

只会匹配您的字符串。

尸检:

  • (?<=\/dp\/)-一个积极的回溯,说“匹配必须/dp/在它之前有字符串!”
  • .*?-一个懒惰的匹配 - 尽可能少匹配
  • (?=\/)-一个积极的前瞻,表示“匹配必须有字符串/!”
于 2013-10-05T15:32:51.450 回答
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)

于 2013-10-05T15:38:21.583 回答