python – ¿Cómo capturar un par de líneas alrededor de una coincidencia de expresiones regulares?

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

  1. (.*(\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. {2} cuantifica esto 2 veces.
  3. () alrededor de eso asegura que todas las líneas vengan en un grupo de captura.
  4. 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.

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım