Polecenie 'lub' w wyrażeniach regularnych Pythona

Polecenie '|', które reprezentuje bardziej zaawansowaną wersję 'lub' w porównaniu do polecenia [ ]. To polecenie pozwala podzielić wyrażenie regularne na kilka części. Szukany tekst może pasować albo do jednej części wyrażenia, albo do innej. Spójrzmy na przykłady.

Przykład

W tym przykładzie wzorzec wyszukiwania jest następujący: trzy litery 'a' lub trzy litery 'b':

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

print(res)

Wynik wykonania kodu:

python'! ! abb'

Przykład

W tym przykładzie wzorzec wyszukiwania jest następujący: trzy litery 'a' lub od 1 i więcej liter 'b':

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

print(res)

Wynik wykonania kodu:

python'! ! ! ! axx'

Przykład

W tym przykładzie wzorzec wyszukiwania jest następujący: jedna lub więcej liter lub trzy cyfry:

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

print(res)

Wynik wykonania kodu:

python'! ! ! 1 12 !'

Przykład

Pionowa kreska może dzielić wyrażenie regularne nie na dwie części, ale na dowolną liczbę części:

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

print(res)

Wynik wykonania kodu:

python'! ! ! ddd'

Przykład

Jeśli pionowa kreska znajduje się wewnątrz okrągłych nawiasów, to 'lub' działa tylko wewnątrz tych nawiasów.

Jako przykład znajdźmy ciągi znaków według następującego wzorca: na początku znajduje się lub 'a', lub 'b' jeden lub więcej razy, a potem dwie litery 'x':

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

print(res)

Wynik wykonania kodu:

python'! ! ! exx'

Zadania praktyczne

Задание 1

Dany jest ciąg znaków:

pythontxt = 'aeeea aeea aea axa axxa axxxa'

Napisz wyrażenie regularne, które znajdzie ciągi znaków według wzorca: na brzegach znajdują się litery 'a', a między nimi - lub litera 'e' dowolną liczbę razy lub litera 'x' dowolną liczbę razy.

Задание 2

Dany jest ciąg znaków:

pythontxt = 'aeeea aeea aea axa axxa axxxa'

Napisz wyrażenie regularne, które znajdzie ciągi znaków według wzorca: na brzegach znajdują się litery 'a', a między nimi - lub litera 'e' dwa razy lub litera 'x' dowolną liczbę razy.