Como capturar algumas linhas em torno de uma correspondência de expressão regular?

7

Eu estou procurando por uma expressão regex para combinar duas linhas na linha correspondente. Por exemplo:

ABCDEFGHADEFGH
ABCDEFGHADEFGH
ABCDEFGHDEFGHABCDEFGH
ABCDEFGHDEFGHABCDEFGH
ABCDEFGHABCDEFGHABCDEFGH
ABCDEFGHABCDEFGHABCDEFGH
XXXXXXXX

Eu gostaria de capturar as duas linhas acima do XXXXXXXX.

Qualquer ajuda seria apreciada. Nota: com o Python usando a biblioteca re

    
por takobaba 11.04.2015 / 14:51

1 resposta

13

O seguinte RegEx testa uma quantidade variável de linhas antes da linha XXXXXXXX e as retorna no primeiro grupo de captura.

((.*\n){2})XXXXXXXX

  1. (.*\n) testa uma string que termina com \n , uma nova linha.
  2. {2} quantifica isso duas vezes.
  3. () em torno disso garante que todas as linhas entrem em um grupo de captura.
  4. XXXXXXXX é a string com a qual o texto deve terminar.

Agora, em Python, você pode usar p.match(regex)[0] para retornar o primeiro grupo de captura.

    
por 11.04.2015 / 16:10

Tags