Maison >développement back-end >Tutoriel Python >Comment pouvez-vous capturer des sous-modèles répétitifs dans Python Regex ?
Correspondance et capture de sous-modèles répétitifs dans Python Regex
Lors de la mise en correspondance de modèles complexes comme les adresses e-mail, il est souvent nécessaire de capturer des sous-modèles répétitifs. Par exemple, dans une adresse e-mail telle que « yasar@webmail.something.edu.tr », nous devons capturer les parties de domaine « .something » et « .edu ». Regex fournit un moyen de le faire grâce à des groupes de capture répétés. Cependant, le module re de Python ne le prend pas entièrement en charge.
Option 1 : Utiliser le module re de Python
Si vous essayez d'utiliser un modèle comme (.w ) avec re, il capturera uniquement le dernier groupe correspondant au lieu de toutes les occurrences. Par exemple, avec [email protected], il capturerait uniquement « .tr » et manquerait « .something » et « .edu ».
Option 2 : fractionnement et correspondance plus tard
Comme le suggère la réponse fournie, une approche plus simple en Python consiste à tout faire correspondre dans un premier temps, puis à diviser les sous-modèles capturés à l'aide de la manipulation de chaînes. Cela peut être plus facile à lire et à mettre en œuvre. Par exemple :
import re # Match the entire email address email_pattern = re.compile(r'([^\s@]+)@(\w+\.\w+)') match = email_pattern.match('[email protected]') if match: # Split the domain portion domain = match.group(2) domain_parts = domain.split('.') print('Domain Parts:', domain_parts)
Ce code capture l'intégralité de l'adresse e-mail, puis divise le domaine en plusieurs parties, nous permettant d'accéder et de stocker chaque sous-modèle séparément.
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!