Maison  >  Article  >  développement back-end  >  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
DDDoriginal
2024-11-24 10:46:11606parcourir

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(".")

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?\)'

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)

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!

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