¿Cómo puedo obtener el segundo matcher en expresiones regulares en Java?

cosa:

Quiero extraer el segundo de coincidencias en un patrón de expresión entre -y _en esta cadena:

VA-123456-124_VRG.tif

He intentado esto:

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

Pero consigo 123456-124para la expresión regular anterior en Java.

Sólo necesito 124.

¿Cómo puedo conseguir esto?

Tim Biegeleisen:

Me gustaría utilizar un comparador de patrón formal de aquí, para ser más específico posible. Me gustaría utilizar este patrón:

^[^-]+-[^-]+-([^_]+).*

y compruebe el primer grupo de captura para la posible coincidencia. Aquí es un fragmento de código de trabajo:

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

Manifestación

Por cierto, hay un chiste que también funcionaría aquí:

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

Sin embargo, la advertencia aquí es que no es muy específica, y puede fallar para sus otros datos.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=172575&siteId=1
Recomendado
Clasificación