正则表达式匹配最后一个整数

时间:2014-10-16 12:30:05

标签: regex numbers range

我需要从像

这样的字符串中提取最后一个数字
10-20 days // should extract 20
from 10 to 30 days // should extract 30
between 5 and 12 days //should extract 12

我试过这种模式^。+([0-9] +)[^ \ d] 天。 $但它只需要最后一位而不是整数。

3 个答案:

答案 0 :(得分:2)

您可以使用Positive lookahead assertion

\d+(?=\D*$)

<强>解释

\d+                      digits (0-9) (1 or more times)
(?=                      look ahead to see if there is:
  \D*                      non-digits (all but 0-9) (0 or more
                           times)
  $                        before an optional \n, and the end of
                           the string
)                        end of look-ahead

答案 1 :(得分:2)

最佳选择:

你需要一个前瞻性断言,如下所示:

(\d+)(?=\D*$)

Demo

替代选项:

或者您可以使用?修改当前模式:

^.+?([0-9]+)[^\d]days.?$

第一个?使.+非贪婪。另请注意结尾? - 您的示例中的days后面没有任何字符。 Demo

答案 2 :(得分:0)

试试这个:

(\d+)(?!.*\d)

或者这个:

.*(?:\D|^)(\d+)

希望它有所帮助!
继续编码,
顷。