我需要从像
这样的字符串中提取最后一个数字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] 天。 $但它只需要最后一位而不是整数。
答案 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*$)
或者您可以使用?
修改当前模式:
^.+?([0-9]+)[^\d]days.?$
第一个?
使.+
非贪婪。另请注意结尾?
- 您的示例中的days
后面没有任何字符。 Demo
答案 2 :(得分:0)
试试这个:
(\d+)(?!.*\d)
或者这个:
.*(?:\D|^)(\d+)
希望它有所帮助!
继续编码,
顷。