Maison > Article > développement back-end > Python Regex peut-il capturer efficacement les sous-modèles répétés ?
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!