Maison  >  Article  >  développement back-end  >  Comment capturer des blocs de texte multilignes avec des expressions régulières en Python ?

Comment capturer des blocs de texte multilignes avec des expressions régulières en Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-25 04:34:02902parcourir

How to Capture Multiline Text Blocks with Regular Expressions in Python?

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

  • ^ : correspond au début d'une nouvelle ligne.
  • . : correspond à n'importe quel caractère à l'exception d'une nouvelle ligne.
  •  : correspond à une ou plusieurs répétitions.
  • n : Correspond à un caractère de nouvelle ligne.
  • (?:...) : Crée un groupe sans capture qui correspond à plusieurs occurrences du motif dans la ligne.
  • () Les groupes de capture enferment les deux parties du match.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn