我有一个类似的正则表达式
'#/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