La commande 'ou' dans les expressions régulières Python
La commande '|', qui représente
une version plus puissante du 'ou'
par rapport à la commande [ ]. Cette commande
permet de diviser l'expression régulière en plusieurs
parties. Dans ce cas, la correspondance peut appartenir
soit à une partie de l'expression régulière, soit à
une autre. Regardons des exemples.
Exemple
Dans cet exemple, le modèle de recherche est le suivant :
trois lettres 'a' ou trois lettres
'b':
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
Résultat de l'exécution du code :
'! ! abb'
Exemple
Dans cet exemple, le modèle de recherche est le suivant :
trois lettres 'a' ou de 1 et
plus de lettres 'b':
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
Résultat de l'exécution du code :
'! ! ! ! axx'
Exemple
Dans cet exemple, le modèle de recherche est le suivant : une ou plusieurs lettres ou trois chiffres:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
Résultat de l'exécution du code :
'! ! ! 1 12 !'
Exemple
La barre verticale peut diviser l'expression régulière non pas en deux parties, mais en un nombre quelconque de parties :
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
Résultat de l'exécution du code :
'! ! ! ddd'
Exemple
Si la barre verticale est à l'intérieur de parenthèses
simples, alors le 'ou' fonctionne seulement
à l'intérieur de ces parenthèses.
Par exemple, trouvons les chaînes selon
le modèle suivant : au début se trouve soit
'a', soit 'b' une ou plusieurs
fois, puis deux lettres 'x':
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
Résultat de l'exécution du code :
'! ! ! exx'
Problèmes pratiques
Soit la chaîne :
txt = 'aeeea aeea aea axa axxa axxxa'
Écrivez une expression régulière qui trouvera les chaînes
selon le modèle : sur les bords se trouvent les lettres
'a', et entre elles - soit la lettre
'e' un nombre quelconque de fois, soit la lettre
'x' un nombre quelconque de fois.
Soit la chaîne :
txt = 'aeeea aeea aea axa axxa axxxa'
Écrivez une expression régulière qui trouvera les chaînes
selon le modèle : sur les bords se trouvent les lettres
'a', et entre elles - soit la lettre
'e' deux fois, soit la lettre 'x'
un nombre quelconque de fois.