Pregunta:
Estoy buscando una expresión regular que coincida con un par de líneas sobre la línea coincidente. Por ejemplo:
ABCDEFGHADEFGH
ABCDEFGHADEFGH
ABCDEFGHDEFGHABCDEFGH
ABCDEFGHDEFGHABCDEFGH
ABCDEFGHABCDEFGHABCDEFGH
ABCDEFGHABCDEFGHABCDEFGH
XXXXXXXX
Me gustaría capturar las 2 líneas arriba de XXXXXXXX.
Cualquier ayuda sería apreciada. Nota: con Python usando la biblioteca re
Respuesta:
La siguiente expresión regular prueba una cantidad variable de líneas antes de la línea XXXXXXXX
y las devuelve en el primer grupo de captura.
((.*(\n|\r|\r\n)){2})XXXXXXXX
-
(.*(\n|\r|\r\n))
prueba una cadena que termina con una nueva línea. (\n
para Unix,\r
para Mac OS antiguo,\r\n\
para Windows) -
{2}
cuantifica esto 2 veces. -
()
alrededor de eso asegura que todas las líneas vengan en un grupo de captura. -
XXXXXXXX
es la cadena con la que debe terminar el texto.
Ahora en Python, puede usar p.match(regex)[0]
para devolver el primer grupo de captura.