Je recherche une expression regex pour faire correspondre quelques lignes sur la ligne correspondante. Par exemple:
ABCDEFGHADEFGH
ABCDEFGHADEFGH
ABCDEFGHDEFGHABCDEFGH
ABCDEFGHDEFGHABCDEFGH
ABCDEFGHABCDEFGHABCDEFGH
ABCDEFGHABCDEFGHABCDEFGH
XXXXXXXX
Je voudrais capturer les 2 lignes au-dessus du XXXXXXXX.
Toute aide serait appréciée. Remarque: avec Python utilisant la bibliothèque re
Réponses:
Le RegEx suivant teste une quantité variable de lignes avant la
XXXXXXXX
ligne et les renvoie dans le premier groupe de capture.((.*\n){2})XXXXXXXX
(.*\n)
teste une chaîne se terminant par\n
, une nouvelle ligne.{2}
quantifie cela 2 fois.()
autour qui s'assure que toutes les lignes viennent dans un groupe de capture.XXXXXXXX
est la chaîne avec laquelle le texte doit se terminer.Maintenant en Python, vous pouvez utiliser
p.match(regex)[0]
pour retourner le premier groupe de capture.la source
\r\n
plutôt que juste\n
.XXXXXXXX
(mais ne se terminant pas nécessairement parXXXXXXXX
).Pour ajouter à la réponse d'erikgaal, utilisez un supplément. * Avant xxxxxx, pour faire correspondre les tabulations / espaces blancs.
((. * \ n) {2}). * xxxxxxx
la source
.*
ne correspondra pas seulement aux tabulations / espaces; il correspondra à tout (par exemple, "The quick brown XXXXXXX").