Regexp只抓取最后一个数字


Regexp grabs only last digit

我有一个类似的正则表达式

'#/somestring/[-a-z0-9]+([0-9]+)/#'

像这样的字符串

http://www.localhost.dev/somestring/test-2014-test-153/

我需要抓取url的"153"部分,这是一个帖子id,但现在我只抓取id部分的最后一位"3"。我曾尝试用"*"、"."、"{1,}"修改表达式,但没有成功。

更新:

抱歉,忘了提一下,"somestring"部分也必须检查,这是一个控制器路由。

您需要的是这个简单的正则表达式。它可以使用或不使用尾部斜杠。第一组将包含数字。

somestring'/.+?('d+)'/?$

演示

(如果测试用例的最后一段不是最后一段,则可以使用somestring'/.+?('d+)'/-DEMO

也许这会满足您的需求:

'-([0-9]+)'/
-('d+)/

这是可行的,如果你感到困惑,也可以试试这样的网站http://regexpal.com/

somestring'/.*?('d+)[^'d]*$

试试这个。这将给出最后一个整数,而不管前面是什么。抓住捕获的东西。请参阅演示。

http://regex101.com/r/nA6hN9/42