Szukam wyrażenia regularnego, aby dopasować kilka linii ponad dopasowaną linią. Na przykład:
ABCDEFGHADEFGH
ABCDEFGHADEFGH
ABCDEFGHDEFGHABCDEFGH
ABCDEFGHDEFGHABCDEFGH
ABCDEFGHABCDEFGHABCDEFGH
ABCDEFGHABCDEFGHABCDEFGH
XXXXXXXX
Chciałbym uchwycić 2 linie powyżej XXXXXXXX.
Każda pomoc będzie mile widziana. Uwaga: w Pythonie za pomocą biblioteki re
Odpowiedzi:
Poniższy RegEx sprawdza zmienną liczbę linii przed
XXXXXXXX
linią i zwraca je w pierwszej grupie przechwytywania.((.*\n){2})XXXXXXXX
(.*\n)
sprawdza ciąg znaków zakończony\n
znakiem nowej linii.{2}
określa to 2 razy.()
wokół, dzięki czemu wszystkie linie są w jednej grupie przechwytywania.XXXXXXXX
jest ciągiem, na którym tekst musi się kończyć.Teraz w Pythonie możesz użyć,
p.match(regex)[0]
aby zwrócić pierwszą grupę przechwytywania.źródło
\r\n
zamiast po prostu\n
.XXXXXXXX
(ale niekoniecznie kończy się naXXXXXXXX
).Dodając do odpowiedzi erikgaal, użyj dodatkowego. * Przed xxxxxx, aby dopasować tabulatory / białe spacje.
((. * \ n) {2}). * xxxxxxx
źródło
.*
nie będzie pasować tylko TABS / przestrzenie; pasuje do wszystkiego (np. „Szybki brązowy XXXXXXX”).