Quiero extraer los datos de la siguiente línea de un archivo de texto si el patrón de expresiones regulares coincide en Java. Puedo detectar y hacer coincidir los datos del patrón en un archivo de texto, pero no puedo imprimir la siguiente línea de datos del patrón.
Datos de prueba:
*** Explorer GenV Deno ZnetExpresión regular para hacer coincidir el Explorador
[*\\+]+[\\s+]+[Explorer]+[:]Por favor, ayúdenme a obtener la siguiente línea si se encuentra el patrón *** Explorer.
Puede usar esta expresión regular con un grupo de captura para la siguiente línea después de su patrón de búsqueda:
[*]+\s+Explorer\R(.*)La siguiente línea se captura en el grupo #1
Desglose de expresiones regulares:
[*]+\s+Explorer - Coincide con su patrón de búsqueda\R - Coincide con cualquier carácter de nueva línea(.*) - Partido y línea completa capturada en el grupo #1En el uso de Java:
import java.util.regex.Matcher; import java.util.regex.Pattern; final String regex = "[*]+\\s+Explorer\\R(.*)"; final String input = "*** Explorer\nGenV Deno Znet"; final Pattern pattern = Pattern.compile(regex); final Matcher matcher = pattern.matcher(input); while (matcher.find()) { System.out.println("match: " + matcher.group(1)); }Bueno, para empezar, la expresión regular no va a coincidir con "*** Explorer"
Coincidirá con "*** Explorer:"
Si esto es Java, ¿no puedes simplemente leer la siguiente línea?
while ((lineText = lineReader.readLine()) != null) { hasMatch = lineText.matches(regex); if(hasMatch) { lineText = lineReader.readLine(); System.out.println(lineText); } }Funciona para mi.