Maison >développement back-end >Tutoriel Python >Comment faire correspondre des blocs de texte multilignes avec des expressions régulières Python : capture des composants minuscules et majuscules ?

Comment faire correspondre des blocs de texte multilignes avec des expressions régulières Python : capture des composants minuscules et majuscules ?

DDD
DDDoriginal
2024-10-25 09:56:28518parcourir

How to Match Multiline Text Blocks with Python Regular Expressions: Capturing Lowercase and Uppercase Components?

Faire correspondre des blocs de texte multilignes avec des expressions régulières Python

Dans cette question de programmation, nous visons à faire correspondre un format spécifique de texte qui s'étend sur plusieurs lignes . Le texte d'entrée se compose de blocs alternés de texte minuscules et majuscules, où le texte minuscule représente un composant de base et le texte majuscule représente une séquence d'acides aminés.

Énoncé du problème

La tâche consiste à créer une expression régulière en Python capable de capturer deux composants du texte d'entrée :

  1. Le composant de base en minuscules
  2. La séquence de lignes majuscules qui apparaît deux lignes en dessous

La sortie doit être divisée en deux groupes de capture, avec le composant de base minuscule dans le groupe (1) et la séquence majuscule dans le groupe (2).

Solution

Pour résoudre ce problème, nous pouvons utiliser l'expression régulière suivante :

re.compile(r"^(.+)\n((?:\n.+)+)", re.MULTILINE)

Cette regex fonctionne en mode multiligne, ce qui signifie que les ancres ^ et $ correspondront aux début et fin des lignes, respectivement.

Explication

  • ^(. )$ : correspond au composant minuscule de base seul line.
  • n((?:n. ) ) : correspond aux lignes consécutives de texte en majuscules qui suivent le composant de base.

    • n : Correspond à un caractère de saut de ligne.
    • (?:n. ) : Un groupe sans capture qui correspond à une ou plusieurs occurrences d'un saut de ligne suivi d'un ou plusieurs caractères autres que des espaces ( ).

Utilisation

Pour utiliser cette expression régulière, vous pouvez suivre ces étapes :

import re

text = """
some Varying TEXT
...
[lines of uppercase text]
...
"""

regex = re.compile(r"^(.+)\n((?:\n.+)+)", re.MULTILINE)

match = regex.search(text)
if match:
    lowercase_text = match.group(1)
    uppercase_text = match.group(2)
    # Process the captured text as needed

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