Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Python

Python - Expressions régulières

Page PrécédentePage Suivante

Une expression régulière est une séquence spéciale de caractères qui vous aide à faire correspondre ou à trouver d'autres chaînes ou ensembles de chaînes, à l'aide d'une syntaxe spécialisée contenue dans un modèle. Les expressions régulières sont largement utilisées dans le monde UNIX.

Le module Python re fournit un support complet pour les expressions régulières de type Perl en Python. Le module re lève l'exception re.error si une erreur se produit lors de la compilation ou de l'utilisation d'une expression régulière.

Nous couvririons deux fonctions importantes, qui seraient utilisées pour gérer les expressions régulières. Mais une petite chose d'abord :il existe différents caractères, qui auraient une signification particulière lorsqu'ils sont utilisés dans une expression régulière. Pour éviter toute confusion lors du traitement des expressions régulières, nous utiliserions Raw Strings comme r'expression' .

Le match Fonction

Cette fonction tente de faire correspondre le motif RE à chaîne avec des drapeaux facultatifs .

Voici la syntaxe de cette fonction −

re.match(pattern, string, flags=0)

Voici la description des paramètres −

motif

Il s'agit de l'expression régulière à rechercher.

chaîne

Il s'agit de la chaîne qui serait recherchée pour correspondre au modèle au début de la chaîne.

drapeaux

Vous pouvez spécifier différents indicateurs à l'aide de l'opérateur OR au niveau du bit (|). Ce sont des modificateurs, qui sont répertoriés dans le tableau ci-dessous.

Sr.No. Paramètre et description
1
2
3

Le re.match la fonction renvoie une correspondance objet en cas de succès, Aucun en cas d'échec. Nous utilisons group(num) ou groupes() fonction de match objet pour obtenir l'expression correspondante.

groupe(num=0)

Cette méthode renvoie la correspondance entière (ou le numéro de sous-groupe spécifique)

groupes()

Cette méthode renvoie tous les sous-groupes correspondants dans un tuple (vide s'il n'y en avait pas)

Sr.No. Faire correspondre la méthode et la description de l'objet
1
2

Exemple

Démo en direct
#!/usr/bin/python
import re

line = "Cats are smarter than dogs"

matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)

if matchObj:
   print "matchObj.group() : ", matchObj.group()
   print "matchObj.group(1) : ", matchObj.group(1)
   print "matchObj.group(2) : ", matchObj.group(2)
else:
   print "No match!!"

Lorsque le code ci-dessus est exécuté, il produit le résultat suivant −

matchObj.group() :  Cats are smarter than dogs
matchObj.group(1) :  Cats
matchObj.group(2) :  smarter

La recherche Fonction

Cette fonction recherche la première occurrence de RE motif dans chaîne avec des drapeaux facultatifs .

Voici la syntaxe de cette fonction −

re.search(pattern, string, flags=0)

Voici la description des paramètres −

motif

Il s'agit de l'expression régulière à rechercher.

chaîne

Il s'agit de la chaîne, qui serait recherchée pour correspondre au modèle n'importe où dans la chaîne.

drapeaux

Vous pouvez spécifier différents indicateurs à l'aide de l'opérateur OR au niveau du bit (|). Ce sont des modificateurs, qui sont répertoriés dans le tableau ci-dessous.

Sr.No. Paramètre et description
1
2
3

La re.recherche la fonction renvoie une correspondance objet en cas de succès, aucun en cas d'échec. Nous utilisons group(num) ou groupes() fonction de match objet pour obtenir l'expression correspondante.

groupe(num=0)

Cette méthode renvoie la correspondance entière (ou le numéro de sous-groupe spécifique)

groupes()

Cette méthode renvoie tous les sous-groupes correspondants dans un tuple (vide s'il n'y en avait pas)

Sr.No. Méthodes et description d'objet de correspondance
1
2

Exemple

Démo en direct
#!/usr/bin/python
import re

line = "Cats are smarter than dogs";

searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)

if searchObj:
   print "searchObj.group() : ", searchObj.group()
   print "searchObj.group(1) : ", searchObj.group(1)
   print "searchObj.group(2) : ", searchObj.group(2)
else:
   print "Nothing found!!"

Lorsque le code ci-dessus est exécuté, il produit le résultat suivant −

searchObj.group() :  Cats are smarter than dogs
searchObj.group(1) :  Cats
searchObj.group(2) :  smarter

Correspondance contre recherche

Python propose deux opérations primitives différentes basées sur des expressions régulières :match recherche une correspondance uniquement au début de la chaîne, tandis que recherche recherche une correspondance n'importe où dans la chaîne (c'est ce que fait Perl par défaut).

Exemple

Démo en direct
#!/usr/bin/python
import re

line = "Cats are smarter than dogs";

matchObj = re.match( r'dogs', line, re.M|re.I)
if matchObj:
   print "match --> matchObj.group() : ", matchObj.group()
else:
   print "No match!!"

searchObj = re.search( r'dogs', line, re.M|re.I)
if searchObj:
   print "search --> searchObj.group() : ", searchObj.group()
else:
   print "Nothing found!!"

Lorsque le code ci-dessus est exécuté, il produit le résultat suivant −

No match!!
search --> searchObj.group() :  dogs

Rechercher et remplacer

L'un des re les plus importants les méthodes qui utilisent des expressions régulières est sub .

Syntaxe

re.sub(pattern, repl, string, max=0)

Cette méthode remplace toutes les occurrences du motif RE dans chaîne avec repl , en remplaçant toutes les occurrences sauf max fourni. Cette méthode renvoie la chaîne modifiée.

Exemple

Démo en direct
#!/usr/bin/python
import re

phone = "2004-959-559 # This is Phone Number"

# Delete Python-style comments
num = re.sub(r'#.*$', "", phone)
print "Phone Num : ", num

# Remove anything other than digits
num = re.sub(r'\D', "", phone)    
print "Phone Num : ", num

Lorsque le code ci-dessus est exécuté, il produit le résultat suivant −

Phone Num :  2004-959-559
Phone Num :  2004959559

Modificateurs d'expressions régulières :indicateurs d'option

Les littéraux d'expression régulière peuvent inclure un modificateur facultatif pour contrôler divers aspects de la correspondance. Les modificateurs sont spécifiés sous la forme d'un indicateur facultatif. Vous pouvez fournir plusieurs modificateurs en utilisant OU exclusif (|), comme indiqué précédemment et peut être représenté par l'un d'entre eux −

re.I

Effectue une correspondance insensible à la casse.

re.L

Interprète les mots en fonction des paramètres régionaux actuels. Cette interprétation affecte le groupe alphabétique (\w et \W), ainsi que le comportement des limites de mots (\b et \B).

re.M

Fait correspondre $ à la fin d'une ligne (pas seulement à la fin de la chaîne) et fait correspondre ^ au début de n'importe quelle ligne (pas seulement au début de la chaîne).

re.S

Fait correspondre un point (point) à n'importe quel caractère, y compris une nouvelle ligne.

re.U

Interprète les lettres selon le jeu de caractères Unicode. Ce drapeau affecte le comportement de \w, \W, \b, \B.

re.X

Permet une syntaxe d'expression régulière "plus mignonne". Il ignore les espaces (sauf à l'intérieur d'un ensemble [] ou lorsqu'ils sont échappés par une barre oblique inverse) et traite les # non échappés comme un marqueur de commentaire.

Sr.No. Modificateur et description
1
2
3
4
5
6

Modèles d'expressions régulières

Sauf pour les caractères de contrôle, (+ ? . * ^ $ ( ) [ ] { } | \) , tous les caractères correspondent à eux-mêmes. Vous pouvez échapper un caractère de contrôle en le faisant précéder d'une barre oblique inverse.

Le tableau suivant répertorie la syntaxe d'expression régulière disponible en Python −

^

Correspond au début de la ligne.

$

Correspond à la fin de la ligne.

.

Correspond à n'importe quel caractère unique à l'exception de la nouvelle ligne. L'utilisation de l'option m lui permet également de correspondre à la nouvelle ligne.

[...]

Correspond à n'importe quel caractère entre parenthèses.

[^...]

Correspond à n'importe quel caractère non entre parenthèses

re*

Correspond à 0 ou plusieurs occurrences de l'expression précédente.

re+

Correspond à 1 ou plusieurs occurrences de l'expression précédente.

re ?

Correspond à 0 ou 1 occurrence de l'expression précédente.

re{ n}

Correspond exactement au nombre n d'occurrences de l'expression précédente.

re{ n,}

Correspond à n occurrences ou plus de l'expression précédente.

re{ n, m}

Correspond à au moins n et au plus m occurrences de l'expression précédente.

un| b

Correspond à a ou b.

(re)

Regroupe les expressions régulières et mémorise le texte correspondant.

(?imx)

Active temporairement les options i, m ou x dans une expression régulière. Si entre parenthèses, seule cette zone est affectée.

(?-imx)

Désactive temporairement les options i, m ou x dans une expression régulière. Si entre parenthèses, seule cette zone est affectée.

(? : ré)

Regroupe les expressions régulières sans mémoriser le texte correspondant.

(?imx :re)

Active temporairement les options i, m ou x entre parenthèses.

(?-imx :re)

Désactive temporairement les options i, m ou x entre parenthèses.

(?#...)

Commentaire.

(?=re)

Spécifie la position à l'aide d'un motif. N'a pas de plage.

(?! re)

Spécifie la position à l'aide de la négation de motif. N'a pas de plage.

(?> re)

Correspond à un modèle indépendant sans retour en arrière.

\w

Correspond aux caractères du mot.

\W

Correspond à des caractères non verbaux.

\s

Correspond aux espaces blancs. Équivalent à [\t\n\r\f].

\S

Correspond à un espace non blanc.

\d

Correspond aux chiffres. Équivalent à [0-9].

\D

Correspond à des non-chiffres.

\A

Correspond au début de la chaîne.

\Z

Correspond à la fin de la chaîne. Si une nouvelle ligne existe, elle correspond juste avant la nouvelle ligne.

\z

Correspond à la fin de la chaîne.

\G

Correspond au point où le dernier match s'est terminé.

\b

Correspond aux limites des mots en dehors des crochets. Correspond à l'espacement arrière (0x08) lorsqu'il est entre parenthèses.

\B

Correspond aux limites des non-mots.

\n, \t, etc.

Correspond aux nouvelles lignes, aux retours chariot, aux tabulations, etc.

\1...\9

Correspond à la nième sous-expression groupée.

\10

Correspond à la nième sous-expression groupée si elle correspond déjà. Sinon fait référence à la représentation octale d'un code de caractère.

Sr.No. Motif et description
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

Exemples d'expressions régulières

Caractères littéraux

python

Correspond à "python".

Sr.No. Exemple et description
1

Classes de personnages

[Pp]ython

Correspond à "Python" ou "python"

frottez[vous]

Faites correspondre "ruby" ou "rube"

[aeiou]

Correspond à n'importe quelle voyelle minuscule

[0-9]

Faites correspondre n'importe quel chiffre ; identique à [0123456789]

[a-z]

Correspond à n'importe quelle lettre ASCII minuscule

[A-Z]

Correspond à n'importe quelle lettre ASCII majuscule

[a-zA-Z0-9]

Correspond à l'un des éléments ci-dessus

[^aeiou]

Faites correspondre autre chose qu'une voyelle minuscule

[^0-9]

Faire correspondre autre chose qu'un chiffre

Sr.No. Exemple et description
1
2
3
4
5
6
7
8
9

Classes de personnages spéciaux

.

Correspond à n'importe quel caractère sauf la nouvelle ligne

\d

Faire correspondre un chiffre :[0-9]

\D

Correspond à un non-chiffre :[^0-9]

\s

Faites correspondre un caractère d'espace :[ \t\r\n\f]

\S

Correspondance non blanche :[^ \t\r\n\f]

\w

Faire correspondre un seul caractère de mot :[A-Za-z0-9_]

\W

Faire correspondre un caractère autre qu'un mot :[^A-Za-z0-9_]

Sr.No. Exemple et description
1
2
3
4
5
6
7

Cas de répétition

rubis ?

Faites correspondre "rub" ou "ruby" :le y est facultatif

rubis*

Correspond à "rub" plus 0 ou plus ys

rubis+

Faites correspondre "rub" plus 1 ou plusieurs oui

\d{3}

Faites correspondre exactement 3 chiffres

\d{3,}

Faites correspondre 3 chiffres ou plus

\d{3,5}

Faites correspondre 3, 4 ou 5 chiffres

Sr.No. Exemple et description
1
2
3
4
5
6

Répétition non gourmande

Cela correspond au plus petit nombre de répétitions −

<.*>

Répétition gourmande :correspond à "perl>"

<.*?>

Non gourmand :correspond à "" dans "perl>"

Sr.No. Exemple et description
1
2

Grouper avec des parenthèses

\D\d+

Pas de groupe :+ répète \d

(\D\d)+

Groupé :+ répétitions \D\d paire

([Pp]ython(, ) ?)+

Faites correspondre "Python", "Python, python, python", etc.

Sr.No. Exemple et description
1
2
3

Références

Cela correspond à nouveau à un groupe précédemment apparié −

([Pp])ython&\1ails

Faites correspondre python&pails ou Python&Pails

(['"])[^\1]*\1

Chaîne entre guillemets simples ou doubles. \1 correspond à tout ce qui correspond au 1er groupe. \2 correspond quel que soit le 2ème groupe correspondant, etc.

Sr.No. Exemple et description
1
2

Alternatives

python|perle

Correspond à "python" ou "perl"

frotter(y|le))

Correspond à "ruby" ou "rouble"

Python(!+|\?)

"Python" suivi d'un ou plusieurs ! ou un ?

Sr.No. Exemple et description
1
2
3

Ancres

Cela doit spécifier la position de correspondance.

^Python

Correspond à "Python" au début d'une chaîne ou d'une ligne interne

Python$

Correspond à "Python" à la fin d'une chaîne ou d'une ligne

\APython

Correspond à "Python" au début d'une chaîne

Python\Z

Correspond à "Python" à la fin d'une chaîne

\bPython\b

Faire correspondre "Python" à une limite de mot

\brub\B

\B n'est pas une limite de mot :correspond à "rub" dans "rube" et "ruby" mais pas seul

Python(?=!)

Correspond à "Python", s'il est suivi d'un point d'exclamation.

Python(?!!)

Correspond à "Python", s'il n'est pas suivi d'un point d'exclamation.

Sr.No. Exemple et description
1
2
3
4
5
6
7
8

Syntaxe spéciale avec parenthèses

R(?#commentaire)

Correspond à "R". Tout le reste est un commentaire

R(?i)uby

Insensible à la casse lors de la correspondance avec "uby"

R(?i:uby)

Comme ci-dessus

frotter(?:y|le))

Regrouper uniquement sans créer de \1 backreference

Sr.No. Exemple et description
1
2
3
4

Python

  1. Types de données Python
  2. Opérateurs Python
  3. Instruction de passe Python
  4. Arguments de la fonction Python
  5. Dictionnaire Python
  6. Itérateurs Python
  7. Fermetures Python
  8. Python RegEx
  9. Date-heure Python