Méthode Python re.compile()

Python re 模块Module re de Python


re.compile()est unerefonction du module Python utilisée pourcompiler des expressions régulières.

La précompilation du motif d'expression régulière en un objet d'expression régulière permet de le réutiliser, ce qui améliore l'efficacité de la correspondance.

Définition du mot: compileCela signifie compiler.


Syntaxe de base et paramètres

re.compile()Sert à créer un objet d'expression régulière compilé.

Format de syntaxe

re.compile(pattern, flags=0)

Description du paramètre

  • pattern:
    • Type : chaîne (str)
    • Description : le motif d'expression régulière à compiler.
  • indicateurs:
    • Type : entier (int, facultatif)
    • Description : indicateurs d'expression régulière, tels quere.IGNORECASE、re.MULTILINEetc. Vous pouvez utiliser|pour combiner plusieurs indicateurs.

Description de la fonction

  • Valeur de retour: Renvoie un objet d'expression régulière compilé (re.Patternobjet).
  • Fonctionnalités: L'objet compilé peut être réutilisé ; par rapport à l'appel dere.search()fonctions telles que re.match() à chaque fois et à la réanalyse de l'expression régulière, c'est plus efficace.

Exemples

Maîtrisons à fond, à travers une série d'exemples du simple au complexe,re.compile()l'utilisation de re.compile().

Exemple 1 : Utilisation de base - Compilation d'une expression régulière

Exemple

import re

# Compiler une expression régulière
pattern = re.compile(r'\d+')

# Utiliser l'objet compilé pour effectuer la correspondance
text = "J'ai 3 pommes et 5 oranges"

result = pattern.findall(text)

print("Nombres trouvés :", result)

Sortie attendue :

找到的数字: ['3', '5']

Explication du code :

  1. re.compile(r'\d+')Compiler une expression régulière qui correspond à un ou plusieurs chiffres.
  2. L'objet renvoyé après la compilationpatternhasfindall()、search()、match()des méthodes telles que match(), search(), findall(), etc.
  3. Utiliser l'objet compilé pour la correspondance est plus efficace.

Exemple 2 : Réutiliser le même motif plusieurs fois

Le plus grand avantage de compiler une expression régulière est qu'elle peut être réutilisée, évitant ainsi une analyse répétée.

Exemple

import re

# Compiler une expression régulière pour faire correspondre des adresses e-mail
email_pattern = re.compile(r'\w+@\w+\.\w+')

# Réutilisez-le sur plusieurs textes
textes = [
    "Contactez [email protected] pour obtenir de l'aide",
    "E-mail : [email protected]",
    "Expéditeur : [email protected]"
]

for text in texts:
    result = email_pattern.search(text)
    if result:
        print(f"E-mail trouvé : {result.group()}")

Sortie attendue :

找到邮箱: [email protected]
找到邮箱: [email protected]
找到邮箱: [email protected]

Explication du code :

  • Compilez l'expression régulière une seule fois, puis réutilisez-la sur plusieurs textes.
  • L'objet compilé peut appelersearch()、findall()des méthodes telles que search() plusieurs fois.

Exemple 3 : Utilisation des indicateurs

Vous pouvez spécifier des indicateurs d'expression régulière lors de la compilation pour modifier le comportement de correspondance.

Exemple

import re

# Spécifiez l'indicateur d'insensibilité à la casse lors de la compilation
pattern = re.compile(r'python', re.IGNORECASE)

text = "Python est génial, PYTHON est puissant"

# Utilisez l'objet compilé pour rechercher
result = pattern.findall(text)

print("Trouvé :", result)

Sortie attendue :

找到: ['Python', 'PYTHON']

Explication du code :

  • re.IGNORECASERend la correspondance insensible à la casse.
  • Spécifier des options au moment de la compilation les applique à toutes les opérations utilisant cet objet.

Exemple 4 : Utilisation de groupes

L'objet compilé peut utiliser des groupes pour extraire un contenu spécifique.

Exemple

import re

# Compiler une expression régulière à l'aide de groupes
pattern = re.compile(r'(\d{3})-(\d{4})-(\d{4})')

text = "Zhang San: 138-1234-5678, Li Si: 139-9876-5432"

# Trouver toutes les correspondances
results = pattern.findall(text)

for result in results:
    print(f"Complet : {result)
    print(f" Groupe 1 (3 premiers chiffres) : {result)
    print(f" Groupe 2 (4 chiffres du milieu) : {result)
    print(f" Groupe 3 (4 derniers chiffres) : {result)

Sortie attendue :

完整: 138-1234-5678
  第1组(前3位): 138
  第2组(中间4位): 1234
  第3组(后4位): 5678
完整: 139-9876-5432
  第1组(前3位): 139
  第2组(中间4位): 9876
  第3组(后4位): 5432

Explication du code :

  • Parenthèses()créez trois groupes.
  • findall()Renvoie une liste de tuples, chaque tuple contenant le contenu des groupes.

Exemple 5 : Propriétés de l'objet compilé

L'objet d'expression régulière compilé possède quelques propriétés utiles.

Exemple

import re

# Compiler une expression régulière
pattern = re.compile(r'\d+', re.IGNORECASE | re.MULTILINE)

print("Motif :", pattern.pattern)
print("Indicateurs :", pattern.flags)
print("Nombre de groupes :", pattern.groups)
print("Noms des groupes :", pattern.groupindex)

Sortie attendue :

模式: \d+
标志: 50
分组数: 1
分组名: {}

Explication du code :

  • pattern.pattern- Renvoie la chaîne du motif d'origine.
  • pattern.flags- Renvoie la valeur entière des indicateurs.
  • pattern.groups- Renvoie le nombre de groupes.
  • pattern.groupindex- Renvoie un dictionnaire des groupes nommés.

Exemple 6 : Comparaison avec les fonctions du module re

Exemple

import re

text = "ABC123DEF"

# Méthode 1 : Utiliser directement les fonctions du module re
result1 = re.search(r'\d+', text)

# Méthode 2 : Compiler d'abord, puis utiliser l'objet compilé
pattern = re.compile(r'\d+')
result2 = pattern.search(text)

print("re.search():", result1.group())
print("pattern.search():", result2.group())

# Les deux méthodes produisent le même résultat, mais l'objet compilé peut être réutilisé

Sortie attendue :

re.search(): 123
pattern.search(): 123

Explication du code :

  • Les résultats des deux méthodes sont identiques.
  • Lorsque vous devez utiliser le même motif plusieurs fois, il est recommandé d'utiliserre.compile()pour le compiler à l'avance.

Python re 模块Module re de Python

Autres extensions