Maison > développement back-end > Tutoriel Python > Python Regex peut-il capturer efficacement les sous-modèles répétés ?

Python Regex peut-il capturer efficacement les sous-modèles répétés ?

DDD
Libérer: 2024-11-24 10:46:11
original
686 Les gens l'ont consulté

Can Python Regex Capture Repeated Subpatterns Effectively?

Capture de sous-motifs répétés dans Python Regex

Lors de la mise en correspondance de modèles complexes, la capture de sous-motifs répétitifs peut améliorer les performances des regex. Bien que les expressions régulières Python aient des limites dans la répétition des captures, il existe des solutions de contournement pour capturer efficacement les modèles souhaités.

Scission et concaténation

Une approche, suggérée dans la réponse fournie, est pour faire correspondre l'ensemble du motif initialement et diviser les sous-motifs plus tard. Cette approche simplifie l'expression régulière mais nécessite des étapes supplémentaires pour le fractionnement. Par exemple, envisagez de faire correspondre les adresses e-mail :

import re

pattern = r'(.+?)@(\w+\.\w+)'
text = "yasar@webmail.something.edu.tr"

match = re.match(pattern, text)
if match:
    email_address, domain = match.groups()
    subdomains = domain.split(".")
Copier après la connexion

Groupes Regex

Si le modèle est plus complexe et que les sous-modèles ont des caractéristiques distinctes, les groupes regex (c'est-à-dire les parenthèses ) peut être utilisé pour les capturer directement. Considérons le modèle suivant :

pattern = r'(\w+)?\((\d+) entries?\)'
Copier après la connexion

Ce modèle correspond à un mot et à une expression parenthèse facultative contenant un nombre et le texte « entrées » (ou « entrée »). Les groupes capturés sont accessibles via l'objet de correspondance :

text = "Received 10 entries for yesterday"

match = re.match(pattern, text)
if match:
    word, count = match.groups()
    if word:
        print("Word:", word)
    if count:
        print("Count:", count)
Copier après la connexion

Cette approche permet une capture directe des sous-modèles sans avoir besoin de routines de fractionnement complexes.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal