Ce tutoriel vous permettra d'en savoir plus sur les RegEx et de comprendre diverses expressions régulières.
Un RegEx est un outil puissant pour faire correspondre du texte, sur la base d'un modèle prédéfini. Elle peut détecter la présence ou l'absence d'un texte en le faisant correspondre à un modèle particulier, et peut également diviser un modèle en un ou plusieurs sous-modèles. La bibliothèque standard Python fournit un module re pour les expressions régulières. Sa fonction principale est de proposer une recherche, en prenant une expression régulière et une chaîne de caractères.
import re
import re match = re.search(r"expressions", "Avec oujood \ apprendre les expressions régulières de python") print(match) print(match.group()) print("Index de depart :", match.start()) print("Index de fin :", match.end())La sortie est :
<re.Match object; span=(26, 37), match="expressions"> expressions Index de depart : 26 Index de fin : 37Dans cet exemple, le caractère r (r"expressions") signifie brut, et non RegEx. La chaîne brute est légèrement différente d'une chaîne régulière, elle n'interprète pas le caractère \ comme un caractère d'échappement. Cela est dû au fait que le moteur d'expression régulière utilise le caractère \ pour son propre usage d'échappement.
MetaCharacters | Description | Exemple |
---|---|---|
\ | Utilisé pour supprimer la signification spéciale du caractère qui le suit. | "\d" |
[] | Représente une famille de caractères | "[a-m]" |
^ | Débute par le début | "^bon" |
$ | Se termine par | "planet$" |
. | Correspond à n'importe quel caractère sauf le saut de ligne | "bo..j" |
| | Signifie OU (Correspond à n'importe lequel des caractères séparés par lui. | "falls|stays" |
? | Correspond à zéro ou une occurrence | "he.?o" |
{} | Indiquez le nombre d'occurrences d'une RegEx précédente à mettre en correspondance. | "he.{2}o" |
* | Tout nombre d'occurrences (y compris 0 occurrence) | "he.*o" |
+ | Une ou plusieurs occurrences | "he.+o" |
() | Encadrer un groupe de RegEx |
Caractère | Description | Exemple |
---|---|---|
\A | Renvoie une correspondance si les caractères spécifiés sont au début de la chaîne de caractères. | "\AThe" |
\b | Renvoie une correspondance lorsque les caractères spécifiés se trouvent au début ou à la fin d'un mot. | r"\bain" r"ain\b" |
\B | Renvoie une correspondance lorsque les caractères spécifiés sont présents, mais PAS au début (ou à la fin) d'un mot. | r"\Bain" r"ain\B" |
\d | Renvoie une correspondance lorsque la chaîne contient des chiffres (chiffres de 0 à 9). | "\d" |
\D | Renvoie une correspondance pour laquelle la chaîne NE contient PAS de chiffres. | "\D" |
\s | Renvoie une correspondance lorsque la chaîne contient un caractère d'espace blanc. | "\s" |
\S | Renvoie une correspondance où la chaîne NE contient PAS de caractère d'espace blanc. | "\S" |
\w | Renvoie une correspondance où la chaîne contient des caractères de mot (caractères de a à Z, chiffres de 0 à 9 et le caractère de soulignement _). | "\w" |
\W | Renvoie une correspondance où la chaîne NE contient PAS de caractères de mot. | "\W" |
\Z | Renvoie une correspondance si les caractères spécifiés se trouvent à la fin de la chaîne. | "Spain\Z" |
Le "r" au début de l'expression permet de s'assurer que la chaîne est traitée comme une "chaîne brute".
Ensemble | Description |
---|---|
[arn] | Renvoie une correspondance où l'un des caractères spécifiés (a, r ou n) est présent. |
[a-n] | Renvoie une correspondance pour tout caractère minuscule, dans l'ordre alphabétique entre a et n. |
[^arn] | Recherche tout caractère SAUF a, r et n. |
[0123] | Recherche une correspondance si l'un des chiffres spécifiés (0, 1, 2 ou 3) est présent. |
[0-9] | Recherche une correspondance pour tout chiffre compris entre 0 et 9. |
[0-5][0-9] | Recherche une correspondance pour tout nombre à deux chiffres compris entre 00 et 59. |
[a-zA-Z] | Correspond à tous les caractères alphabétiques compris entre a et z, en minuscules OU en majuscules. |
[+] | Dans les ensembles, +, *, ., |, (), $, {} n'ont pas de signification particulière, ils sont conséderés comme des caractères simples. Ainsi, [+] signifie : recherche de tout caractère + dans la chaîne. |
Fonction | Description |
---|---|
findall | Renvoie une liste contenant toutes les correspondances |
search | Renvoie un objet Match s'il y a une correspondance n'importe où dans la chaîne. |
split | Renvoie une liste dans laquelle la chaîne a été divisée à chaque correspondance. |
sub | Remplace une ou plusieurs correspondances par une chaîne de caractères. |
""" """ import re texte = "Bonjour, mon adresse est numero 6 rue 16 bloc 25 quartier des bons et celle de mon ami est 98 rue 25 bloc 56 quartier des lions" regex = "\d+" match = re.findall(regex, texte) print(match)Sortie :
import re regex = r" ([0-3][0-9]) ([a-zA-Z]+)" texte = "Ma date de naissance est le 22 Aout" resultat = re.search(regex, texte) jour=(resultat.group(1)) mois=resultat.group(2) if resultat != None and int(jour)<=31: print ("Résultat trouvée à l'index %s, %s" % (resultat.start(), resultat.end())) print ("Résultat complet: %s" % (resultat.group(0))) print ("Jour: %s" % (jour)) print ("Mois: %s" % (mois)) else: print ("Aucun résultat n'est trouvé.")Sortie:
Résultat trouvée à l'index 27, 35 Résultat complet: 22 Aout Jour: 22 Mois: Aout
re.split(modèle, chaîne, maxsplit=0, flags=0)
Le premier paramètre, modèle désigne l'expression régulière.from re import split texte1 = "Words, words , Words" texte2 = "Word's words Words" print(split('\W+', texte1)) print(split('\W+', texte2)) texte3 = "Le 12 janvier 2016, à 11:02 AM" print(split('\W+', texte3)) print(split('\d+', texte3))Sortie :
['Words', 'words', 'Words'] ['Word', 's', 'words', 'Words'] ['Le', '12', 'janvier', '2016', 'à', '11', '02', 'AM'] ['Le ', ' janvier ', ', à ', ':', ' AM']Exemple 2:
import re texte1 = "Le 12 Janvier 2016, à 11:02 AM" texte2 = "He, Un garçon et un garçon, venez ici" print(re.split('\d+', texte1, 1)) print(re.split('[e-g]+', texte2, flags=re.IGNORECASE)) print(re.split('[e-g]+', texte2))Sortie :
['Le ', ' Janvier 2016, à 11:02 AM'] ['H', ', un ', 'arçon ', 't un ', 'arçon, v', 'n', 'z ici'] ['H', ', un Garçon ', 't un ', 'arçon, v', 'n', 'z ici']
re.sub( modèle, remplace, texte, compte=0, flags=0)
import re # chaîne de caractères multiligne texte = 'abc de 12 fg \n 34 h57 68 kil' # correspond à tous les caractères d'espacement modele = '\s+' # chaîne de remplacement remplace = '_' new_texte = re.sub(modele, remplace, texte) print(new_texte)Sortie:
# chaîne de caractères multiligne texte = 'abc de 12 fg \n 34 h57 68 kil' # correspond à tous les caractères d'espacement modele = '\s+' # chaîne de remplacement remplace = '_' # le paramètre compte = 2 # Seules deux occurrence seront remplacées new_texte = re.sub(modele, remplace, texte, 2) print(new_texte)
import re texte = "Bienvenue sur le site oujood.com " resultat = re.search("site", texte) print(resultat.re) print(resultat.string)La sortie :
re.compile('site') Bienvenue sur le site oujood.com
print(resultat.start()) print(resultat.end()) print(resultat.span())La sortie sera comme suit:
re.compile('site') Bienvenue sur le site oujood.com 17 21 (17, 21)
import re s = "J'apprends Python avec le site oujood.com " resultat = re.search(r"\D{6} a", s) print(resultat.group())La sortie sera comme suit:
Python a
Livre numérique court pour comprendre la méthode secrète permettant d'obtenir des likes sans fin sur Facebook.
GAGNER DE L'ARGENT