我如何在两个 /
之间找到一个单词http://www.amazon.fr/Les-cahiers-d%C3%A9criture-n%C2%BA1-Apprentissage/dp/221895608X/ref=zg_bs_3967461_1
我的正则表达式dp/.*?/
我得到 dp / 221895608X / ,但我只想 221895608X
答案 0 :(得分:4)
使用dp/(.*?)/
,然后选择匹配的第一个组,而不是整个匹配。
注意:我无法告诉您如何采取第一个匹配组,因为您尚未指定您正在使用的语言。
答案 1 :(得分:2)
当然 - positive lookaheads/lookbehinds:
/(?<=\/dp\/).*?(?=\/)/
仅匹配您的字符串。
尸检:
(?<=\/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)