Le guide du débutant sur les expressions régulières avec Python

Le guide du débutant sur les expressions régulières avec Python

Si vous êtes programmeur, il est probable que vous sachiez déjà ce que sont les expressions régulières (regex). Les modèles Regex ont été implémentés dans presque tous les langages de programmation grand public, mais la puissance et la polyvalence de ces modèles ne sont toujours pas reconnues par la plupart des développeurs.





Ce guide traite des expressions régulières et de la façon dont vous pouvez les utiliser dans le langage de programmation Python.





Que sont les expressions régulières ?

Les expressions régulières sont des modèles qui aident un utilisateur à faire correspondre des combinaisons de caractères dans des fichiers texte et des chaînes. Vous pouvez utiliser des expressions régulières pour filtrer ou rechercher un modèle spécifique dans la sortie d'une commande ou d'un document.





Il existe différents cas d'utilisation d'expressions régulières, le plus connu étant la commande grep sous Linux . D'autres applications incluent le filtrage d'informations telles que l'extraction d'adresses e-mail et de numéros de téléphone à partir d'un vidage de données.

La principale raison pour laquelle de nombreux développeurs s'éloignent des expressions régulières est le manque de sensibilisation à la puissance de la correspondance de modèles. Certains trouvent même les expressions régulières confuses en raison de la quantité importante de caractères et de séquences utilisés dans les modèles.



Quelle que soit la raison, les expressions régulières sont et seront l'un des aspects les plus importants de la programmation que tout le monde devrait connaître.

comment faire un usb bootable à partir d'iso

Expressions régulières : correspondance des caractères et des séquences

Regex est un tout nouveau langage en soi. Un moteur de regex interprète des modèles composés de plusieurs caractères dotés de significations spécifiques. Les littéraux de base tels que les caractères alphanumériques se correspondent. Mais les caractères complexes tels que $, *, +, {, etc. facilitent la correspondance d'ordre supérieur.





  1. Astérisque (*) : Correspond au caractère précédent zéro ou plusieurs fois. La signification littérale du caractère serait « Élément multiplié n fois ». Par exemple, si l'expression régulière est abc * , les chaînes mises en correspondance seront ab, abc, abcc, abccc, abcccc, etc. L'expression [avant JC]* correspondra à bc, bcbc, bcbc, etc.
  2. Plus (+): Correspond au caractère précédent une ou plusieurs fois. Le fonctionnement du + le caractère est similaire à * , mais le + caractère omet le motif si le caractère ne se produit pas. Par exemple, abc + correspondra à abc, abcc, abccc, etc. mais pas à ab.
  3. Point d'interrogation (?): Correspond au caractère précédent zéro ou une fois. Par exemple, le motif abc? correspondra uniquement à ab et abc.
  4. Tuyau (|) : Utilisé comme binaire OU opérateur. Correspond à l'un ou l'autre des caractères précédant et suivant le tube. Par exemple, a|b correspondra à a ou b.
  5. Point (.) : Correspond à un personnage dont l'identité est inconnue. Par exemple, c.a. correspondra à aac, abc, acc, a2c, et ainsi de suite.
  6. Carotte (^): Correspond au premier caractère du motif. Par exemple, ^Ra correspondra aux mots commençant par Dehors tels que Lapin, Raton laveur et Aléatoire.
  7. Dollars ($) : Correspond au dernier caractère du motif. Par exemple, un$ correspondra aux mots se terminant par un tels que Van, Dan et Plan.
  8. Trait d'union (-): Utilisé pour définir une plage de caractères. Par exemple, [0-9] correspondra à tous les caractères numériques à un chiffre.

Les séquences spéciales utilisées dans les modèles d'expressions régulières sont :

  1. À: Renvoie une correspondance si les caractères suivants sont présents au début de la chaîne. Par exemple, ALe correspondra aux mots commençant par le Les tels que The, Them, They, etc.
  2.  : Renvoie une correspondance si le caractère se trouve au début ou à la fin d'un mot. Par exemple, bmad et fou correspondra à des mots tels que fabriqué et nomade respectivement.
  3. B : Renvoie une correspondance si le caractère n'est pas trouvé au début ou à la fin d'un mot.
  4. é: Correspond aux caractères numériques présents dans la chaîne. Par exemple, /ré* correspondra à des nombres tels que 1, 12, 1232, etc.
  5. RÉ: Correspond aux caractères non numériques de la chaîne. /RÉ correspondra à a, b, c, f, etc.
  6. s : Correspond à un caractère d'espacement dans le texte.
  7. S : Correspond à un caractère non blanc dans le texte.
  8. dans: Renvoie une correspondance si la chaîne contient des caractères alphanumériques, y compris des traits de soulignement. Par exemple, dans correspondra à a, b, c, d, 1, 2, 3, etc.
  9. DANS: Renvoie une correspondance si la chaîne ne contient pas de caractères alphanumériques ou de traits de soulignement.
  10. AVEC: Correspond aux caractères à la fin d'une chaîne. Par exemple, fin correspondra aux mots se terminant par finir tels que plier, réparer, tendre, etc.

Méthodes Python pour les expressions régulières

En Python, le La bibliothèque fournit toutes les fonctions et utilitaires nécessaires pour implémenter regex dans vos programmes. Vous n'avez pas besoin de télécharger la bibliothèque à l'aide de pip car elle est préinstallée avec l'interpréteur Python.





Pour importer le bibliothèque en Python, ajoutez le code suivant à votre script :

import re

Notez que lors de la transmission d'expressions régulières en Python, nous utilisons des chaînes brutes car elles n'interprètent pas les caractères spéciaux tels que et différemment.

Rencontre()

Les re.match() La méthode en Python renvoie un objet regex si le programme trouve une correspondance au début de la chaîne spécifiée. Cette fonction prend deux arguments de base :

re.match(pattern, string)

...où modèle est l'expression régulière et chaîne de caractères est le texte qui doit être recherché.

Jetez un œil à l'extrait de code ci-dessous.

import re
match = re.match(r'Word', 'This sentence contains a Word')
print(match)

Les r caractère avant la chaîne représente la chaîne brute.

Sortir:

None

Le code ci-dessus renvoie Rien car Mot n'était pas présent au début de la chaîne.

Si une correspondance est trouvée, vous pouvez imprimer la correspondance en utilisant le grouper() méthode qui appartient à l'objet regex.

import re
match = re.match(r'Word', 'Word is hard to read')
print(match.group(0))

Sortir:

Word

Les recherche () La méthode prend des arguments similaires à re.match(). Alors que match() ne renvoie que les correspondances présentes au début de la chaîne, chercher() renverra les correspondances trouvées à n'importe quel index dans la chaîne.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
print(match.group(0))

Notez que le rencontre() et chercher() les méthodes ne renverront qu'une seule correspondance de modèle. Dans le code ci-dessus, Mot apparaît deux fois. Mais le chercher() fonction ne correspondra qu'à la première occurrence du mot.

Word

Trouver tout()

Comme vous pouvez déjà le deviner, le Trouver tout() La méthode renvoie toutes les correspondances possibles dans la chaîne.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
for elem in match:
print(elem)

Au lieu de renvoyer un objet regex, la fonction findall() renvoie une liste de toutes les correspondances. Vous pouvez parcourir la liste en utilisant un boucle for en python .

Diviser()

Si vous souhaitez diviser une chaîne en sous-chaînes en utilisant un modèle comme délimiteur, alors le diviser() la fonction est celle dont vous avez besoin.

import re
split = re.split(r'and', 'This word and that and this are different.')
print(split)

Sortir:

['This word', 'that', 'this are different.']

Sous()

Les sous() La méthode permet à un utilisateur de substituer un mot spécifique à la place d'un modèle. Il prend les arguments suivants.

re.sub(pattern, replacement, string)

Considérez cet extrait de code :

import re
result = re.sub(r'and', 'or', 'Dave and Harry must be punished.')
print(result)

Sortir:

Dave or Harry must be punished.

Compiler()

Les re.compiler() méthode dans le La bibliothèque permet à un utilisateur de stocker une version compilée du modèle d'expression régulière dans la mémoire. Ensuite, à l'aide de l'objet compilé, l'utilisateur peut rapidement filtrer le vidage de texte spécifié pour les modèles correspondants.

import re
pattern = re.compile('Python')
match = pattern.findall('Python is a great language for writing scripts. Python is easy to learn.')
print(match)

Cette fonction est principalement utilisée pour enregistrer des modèles gourmands en ressources et nécessitant beaucoup de temps pour s'exécuter. La compilation et l'enregistrement préalable du modèle en tant qu'objet résout ce problème.

Tirez parti de la puissance de Regex avec Python

Lorsque vous travaillez avec des fichiers texte et des sorties, regex est un excellent outil à votre disposition. Vous pouvez rapidement écrire du code pour filtrer ou remplacer des modèles spécifiques dans le document.

Mémoriser tous les caractères et les séquences correspondantes peut être difficile si vous débutez avec regex. Pour vous améliorer dans les expressions régulières, vous référer de temps en temps à une liste de caractères, de méthodes et de séquences vous aidera certainement à long terme.

Partager Partager Tweeter E-mail La feuille de triche Python RegEx pour les programmeurs en herbe

Utilisez cette liste d'expressions régulières Python pour mieux utiliser ce langage de programmation polyvalent.

Lire la suite
Rubriques connexes
  • La programmation
  • La programmation
  • Python
A propos de l'auteur Profonde Sharma(79 articles publiés)

Deepesh est l'éditeur junior pour Linux chez MUO. Il écrit des guides d'information sur Linux, visant à offrir une expérience heureuse à tous les nouveaux arrivants. Pas sûr des films, mais si vous voulez parler de technologie, c'est votre homme. Pendant son temps libre, vous pouvez le trouver en train de lire des livres, d'écouter différents genres musicaux ou de jouer de sa guitare.

Plus de Deepesh Sharma

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner