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

sAa*_*aCh 6 java regex

我想在此字符串之间-和之中_以正则表达式模式提取第二个匹配器:

VA-123456-124_VRG.tif
Run Code Online (Sandbox Code Playgroud)

我试过这个:

Pattern mpattern = Pattern.compile("-.*?_");
Run Code Online (Sandbox Code Playgroud)

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

我只需要124.

我怎样才能做到这一点?

Tim*_*sen 3

我将在这里使用正式的模式匹配器,尽可能具体。我会使用这个模式:

^[^-]+-[^-]+-([^_]+).*
Run Code Online (Sandbox Code Playgroud)

然后检查第一个捕获组是否有可能的匹配。这是一个工作代码片段:

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
Run Code Online (Sandbox Code Playgroud)

演示

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

System.out.println(input.split("[_-]")[2]);
Run Code Online (Sandbox Code Playgroud)

但是,这里需要注意的是,它不是很具体,并且可能对您的其他数据失败。