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':

pythontxt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)

print(res)

Résultat de l'exécution du code :

python'! ! abb'

Exemple

Dans cet exemple, le modèle de recherche est le suivant : trois lettres 'a' ou de 1 et plus de lettres 'b':

pythontxt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)

print(res)

Résultat de l'exécution du code :

python'! ! ! ! axx'

Exemple

Dans cet exemple, le modèle de recherche est le suivant : une ou plusieurs lettres ou trois chiffres:

pythontxt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)

print(res)

Résultat de l'exécution du code :

python'! ! ! 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 :

pythontxt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)

print(res)

Résultat de l'exécution du code :

python'! ! ! 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':

pythontxt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)

print(res)

Résultat de l'exécution du code :

python'! ! ! exx'

Problèmes pratiques

Задание 1

Soit la chaîne :

pythontxt = '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.

Задание 2

Soit la chaîne :

pythontxt = '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.