Maison > développement back-end > Tutoriel Python > 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
Libérer: 2024-10-25 04:34:02
original
1017 Les gens l'ont consulté

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).
Copier après la connexion

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)
Copier après la connexion

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]"
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal