Si vous êtes un programmeur, il y a de fortes chances 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 traditionnels, 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 les combinaisons de caractères dans les fichiers texte et les 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, comme 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 conscience de la puissance de la correspondance de modèles. Certains trouvent même les expressions régulières déroutantes en raison de la grande quantité de caractères et de séquences utilisées dans les modèles.
Quelle qu'en 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.
Expressions régulières: correspondance des caractères et des séquences
Regex est un tout nouveau langage en soi. Un moteur d'expression régulière 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 des caractères complexes tels que $, *, +, {, etc. aide à l'appariement d'ordre supérieur.
- Astérisque (*): Correspond zéro ou plusieurs fois au caractère précédent. 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 correspondantes seront ab, abc, abcc, abccc, abcccc, etc. L'expression [avant JC]* correspondra à bc, bcbc, bcbc, etc.
- Plus (+): Correspond au caractère précédent une ou plusieurs fois. Le fonctionnement de la + le caractère est similaire à *, mais le + caractère omet le modèle si le caractère ne se produit pas. Par example, abc + correspondra à abc, abcc, abccc, etc. mais pas ab.
- Point d'interrogation (?): Correspond à zéro ou une fois le caractère précédent. Par exemple, le motif abc? correspondra uniquement à ab et abc.
- Tuyau (|): Utilisé comme binaire OU ALORS opérateur. Correspond à l'un des caractères précédant et suivant le tube. Par example, a | b correspondra à a ou b.
- Point (.): Correspond à un personnage dont l'identité est inconnue. Par example, a.c correspondra à aac, abc, acc, a2c, etc.
- Carotte (^): Correspond au premier caractère du motif. Par example, ^ Ra correspondra aux mots commençant par Ra comme Rabbit, Raccoon et Random.
- Dollar ($): Correspond au dernier caractère du motif. Par example, un $ correspondra aux mots se terminant par un comme Van, Dan et Plan.
- Trait d'union (-): Utilisé pour définir une plage de caractères. Par example, [0-9] correspondra à tous les caractères numériques à un seul chiffre.
Les séquences spéciales utilisées dans les modèles d'expression régulière sont:
- \UNE: Renvoie une correspondance si les caractères suivants sont présents au début de la chaîne. Par example, \ ALe correspondra aux mots commençant par le tels que The, Them, They, etc.
- \ b: Renvoie une correspondance si le caractère se trouve au début ou à la fin d'un mot. Par example, \ bmad et fou \ b correspondra à des mots tels que fait et nomade respectivement.
- \ B: Renvoie une correspondance si le caractère n'est pas trouvé au début ou à la fin d'un mot.
- \ré: Correspond aux caractères numériques présents dans la chaîne. Par example, /d* correspondra à des nombres tels que 1, 12, 1232, etc.
- \RÉ: Correspond aux caractères non numériques de la chaîne. /RÉ correspondra à a, b, c, f, etc.
- \ s: Correspond à un caractère d'espacement dans le texte.
- \ S: Correspond à un caractère non blanc dans le texte.
- \ w: Renvoie une correspondance si la chaîne contient des caractères alphanumériques, y compris des traits de soulignement. Par example, \ w correspondra à a, b, c, d, 1, 2, 3, etc.
- \ W: Renvoie une correspondance si la chaîne ne contient pas de caractères alphanumériques ou de traits de soulignement.
- \ Z: Correspond aux caractères à la fin d'une chaîne. Par example, fin \ Z correspondra aux mots se terminant par finir comme plier, réparer, tendre, etc.
Méthodes Python pour les expressions régulières
En Python, le ré 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 ré bibliothèque en Python, ajoutez le code suivant à votre script:
importer re
Notez qu'en passant des 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 \ n et \ t différemment.
Correspondre()
le re.match () en Python retourne 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 (motif, chaîne)
...où schéma est l'expression régulière et chaîne est le texte qui doit être recherché.
Jetez un œil à l'extrait de code ci-dessous.
importer re
match = re.match (r'Word ', "Cette phrase contient un mot")
imprimer (correspondance)
le r le caractère avant la chaîne représente une chaîne brute.
Production:
Rien
Le code susmentionné renvoie Rien car Mot n'était pas présent au début de la chaîne.
Si une correspondance est trouvée, vous pouvez l'imprimer à l'aide du grouper() méthode qui appartient à l'objet regex.
importer re
match = re.match (r'Word ', "Word est difficile à lire")
imprimer (match.group (0))
Production:
Mot
Rechercher()
le 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, rechercher() renverra les correspondances trouvées à n'importe quel index de la chaîne.
importer re
match = re.search (r'Word ', "Cette phrase contient un mot. Word est difficile à lire. ")
imprimer (match.group (0))
Notez que le correspondre() et rechercher() Les méthodes ne renverront qu'une seule correspondance de modèle. Dans le code mentionné ci-dessus, Mot apparaît deux fois. Mais le rechercher() ne correspondra qu'à la première occurrence du mot.
Mot
Trouver tout()
Comme vous pouvez déjà le deviner, le Trouver tout() La méthode renvoie toutes les correspondances possibles dans la chaîne.
importer re
match = re.search (r'Word ', "Cette phrase contient un mot. Word est difficile à lire. ")
pour elem en match:
imprimer (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.
importer re
split = re.split (r'and ', "Ce mot et cela et cela sont différents.")
impression (fractionnée)
Production:
['Ce mot "," cela "," ce sont différents. "]
Sous()
le sous() La méthode permet à un utilisateur de substituer un mot spécifique à la place d'un motif. Il prend les arguments suivants.
re.sub (modèle, remplacement, chaîne)
Considérez cet extrait de code:
importer re
result = re.sub (r'and ',' or ', "Dave et Harry doivent être punis.")
imprimer (résultat)
Production:
Dave ou Harry doivent être punis.
Compiler()
le re.compile () méthode dans le ré 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 filtrer rapidement le vidage de texte spécifié pour les modèles correspondants.
importer re
motif = re.compile ('Python')
match = pattern.findall ("Python est un excellent langage pour écrire des scripts. Python est facile à apprendre. ")
imprimer (correspondance)
Cette fonction est principalement utilisée pour enregistrer des modèles qui nécessitent beaucoup de ressources et qui nécessitent 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.
La mémorisation de tous les caractères et des séquences correspondantes peut être difficile si vous débutez tout juste avec l'expression régulière. Pour vous améliorer dans les expressions régulières, faire référence à une liste de caractères, de méthodes et de séquences de temps en temps vous aidera certainement à long terme.
Utilisez cette liste d'expressions régulières Python afin de mieux utiliser ce langage de programmation polyvalent.
Lire la suite
- Programmation
- Programmation
- Python
Deepesh est l'éditeur junior pour Linux chez MUO. Il écrit du contenu informatif sur Internet depuis plus de 3 ans. Pendant son temps libre, il aime écrire, écouter de la musique et jouer de la guitare.
Abonnez-vous à notre newsletter
Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives!
Un pas de plus…!
Veuillez confirmer votre adresse e-mail dans l'e-mail que nous venons de vous envoyer.