对于这样的网址:
http://www.walmart.com/ip/0982724/some-text-here/234397280?foo=bar
如何在最后一个斜线后获得可变长度数?
我尝试使用这个正则表达式:
\/([0-9]+)
但它获得了第一个数字,而不是最后一个数字。
演示:http://regex101.com/r/nU3wG2
我尝试在最后添加一个美元符号,但之后没有匹配。
答案 0 :(得分:3)
您可以使用这个基于前瞻性的正则表达式:
\/([0-9]+)(?=[^\/]*$)
这意味着找到一个后跟0或更多非斜杠字符串的数字,直到结束。
答案 1 :(得分:1)
如果您可以使用捕获组的内容,则可以在没有很少实现的超前功能的情况下执行此操作。
\/([0-9]+)[^\/]*$
在线演示: http://regex101.com/r/yG2zN1
这意味着“找到斜杠后跟任意正数位数后跟任何非斜杠字符后跟行尾”。当正则表达式找到longest leftmost匹配时,所有这些数字都会被捕获到一个组中。
答案 2 :(得分:0)
$aa = "http://www.walmart.com/ip/0982724/some-text-here/234397280?foo=bar";
$aa =~ /\/(\d+)\D+$/;
print $1, "\n";
此打印234397280 \ D是任何非数字\ d是任何数字,它与'[0-9]
相同