使用Java正则表达式匹配器查找最后一个匹配项

28

我正在尝试获取匹配结果中的最后一个,而不必通过循环 .find() 方法来实现

这是我的代码:

String in = "num 123 num 1 num 698 num 19238 num 2134";
Pattern p = Pattern.compile("num ([0-9]+)");
Matcher m = p.matcher(in);

if (m.find()) {
     in = m.group(1);
}

这将给我第一个结果。如何找到最后一个匹配项,而无需循环遍历潜在的大列表?


你能确定它是字符串中的最后一个吗?如果是,只需使用行尾锚点$ /(num ([0-9]+)$/,但这需要转换成Java。 - NorthGuard
你可以编写一个递归方法,但我怀疑它是否有意义。 - s106mo
11个回答

0

只需使用\Z - 字符串结尾匹配

String in = "num 123 num 1 num 698 num 19238 num 2134";
Pattern p = Pattern.compile("num ([0-9]+)\\Z");
Matcher m = p.matcher(in);

if (m.find()) {
     in = m.group(1);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接