Expression régulière pour faire correspondre des blocs de texte multilignes
En Python, faire correspondre du texte sur plusieurs lignes peut être difficile. Cet article fournit une solution concise pour capturer des blocs multilignes et leurs groupes de lignes associés.
Considérez le format de texte suivant :
some Varying TEXT DSJFKDAFJKDAFJDSAKFJADSFLKDLAFKDSAF [more of the above, ending with a newline] [yep, there is a variable number of lines here] (repeat the above a few hundred times).
L'objectif est de capturer deux groupes : les « certains TEXTES variables " et les lignes majuscules suivantes (sans nouvelles lignes) dans un groupe de capture.
Lösungsansatz
re.compile(r"^(.+)\n((?:\n.+)+)", re.MULTILINE)
Erläuterung
Beispiel
text = "some Varying TEXT\nDSJFKDAFJKDAFJDSAKFJADSFLKDLAFKDSAF\n[more of the above]\n[yep, there is a newline]\n(repeat the above)." match = re.match(r"^(.+)\n((?:\n.+)+)", text, re.MULTILINE) print(match.group(1)) # "some Varying Text" print(match.group(2)) # "DSJFKDAFJKDAFJDSAKFJADSFLKDLAFKDSAF\n[more of the above]\n[yep, there is a newline]"
Cette approche utilise le module re de Python et son option MULTILINE pour activer la correspondance multiligne et éviter les problèmes d'ancrage.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!