【发布时间】:2014-07-18 15:44:28
【问题描述】:
我的输入字符串是这样的:
foo 12
12 foo 123
foo 12 foo 1234
f1o2o 12345
foo 12 123456
...
我需要捕获最后一个数字:12, 123, 1234, 12345, 123456 ...
每一行都是单独处理的:
Pattern p = Pattern.compile(".*([0-9]+)$");
Matcher m = p.matcher("foo 12 123456");
m.matches()
输出:6
是否有任何形式来反转匹配?或者我应该如何更改模式以恢复最后一个数字?
【问题讨论】:
-
制作 .* 惰性模式 p = Pattern.compile(".*?([0-9]+)$");
-
旁注:在这种特殊情况下,您不需要正则表达式。按空格分割字符串并从结果数组中获取最后一个元素。 (仅适用于您的特定情况,使用您提供的示例数据)
-
为什么不只是
split()基于\\s+并得到最后一个数字?
标签: java regex string-matching