如何在Java中使用正则表达式获取第二个匹配器?

前端之家收集整理的这篇文章主要介绍了如何在Java中使用正则表达式获取第二个匹配器?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Match at every second occurrence6个
我想在这个字符串中的 – 和_之间以正则表达式模式提取第二个匹配器:
VA-123456-124_VRG.tif

我试过这个:

Pattern mpattern = Pattern.compile("-.*?_");

但是我在Java中获得了上述正则表达式的123456-124.

我只需要124.

我怎样才能做到这一点?

解决方法

我会在这里使用正式的模式匹配器,尽可能具体.我会用这种模式:
^[^-]+-[^-]+-([^_]+).*

然后检查第一个捕获组以查找可能的匹配项.这是一个有效的代码片段:

String input = "A-123456-124_VRG.tif";
String pattern = "^[^-]+-[^-]+-([^_]+).*";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(input);

if (m.find()) {
   System.out.println("Found value: " + m.group(1) );
}

124

Demo

顺便说一句,有一个班轮也可以在这里工作:

System.out.println(input.split("[_-]")[2]);

但是,这里需要注意的是,它不是非常具体,可能会因您的其他数据而失败.

猜你在找的Java相关文章