Maison >développement back-end >Tutoriel Python >Comment capturer plusieurs occurrences d'un sous-modèle dans Python Regex ?

Comment capturer plusieurs occurrences d'un sous-modèle dans Python Regex ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-30 22:27:16995parcourir

How to Capture Multiple Occurrences of a Subpattern in Python Regex?

Capturer des modèles répétitifs avec Python Regex

Lorsque vous faites correspondre des modèles complexes tels qu'une adresse e-mail, vous pouvez rencontrer le besoin de capturer plusieurs occurrences de un sous-modèle spécifique. Dans le module d'expression régulière de Python, cela peut présenter un défi.

Prenons l'exemple de la correspondance d'une adresse e-mail telle que "yasar@webmail.something.edu.tr". Après avoir fait correspondre la partie initiale de l'e-mail, vous souhaiterez peut-être capturer une ou plusieurs occurrences du sous-modèle ".(w )".

En essayant d'utiliser l'expression "(.w )", vous avez réalisé que il ne capture que le dernier match. Cela signifie que vous manquez les groupes ".something" et ".edu".

Dans le module d'expression régulière de Python, les captures répétées ne sont pas prises en charge, même si elles sont dans la norme regex. Pour cette raison, capturer tout en même temps, puis diviser les sous-modèles ultérieurement est une approche plus efficace.

Voici un exemple de la façon dont vous pouvez diviser les sous-modèles après avoir capturé l'adresse e-mail à l'aide d'une expression simple :

import re

pattern = r'([.\w]+)@((\w+)(\.\w+)+)'
match = re.match(pattern, 'yasar@webmail.something.edu.tr')

# Split the subpatterns
subpatterns = match.group(2).split('.')

# Access the subpatterns
print(subpatterns[0])  # 'webmail'
print(subpatterns[1])  # 'something'
print(subpatterns[2])  # 'edu'

Cette méthode vous permet de capturer et d'accéder aux sous-modèles répétés individuellement, offrant une solution simple et lisible.

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