Maison >développement back-end >Tutoriel Python >Comment pouvez-vous capturer des sous-modèles répétitifs dans Python Regex ?

Comment pouvez-vous capturer des sous-modèles répétitifs dans Python Regex ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-24 12:43:11169parcourir

How Can You Capture Repeating Subpatterns in 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!

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