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':
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
Wynik wykonania kodu:
'! ! abb'
Przykład
W tym przykładzie wzorzec wyszukiwania jest następujący:
trzy litery 'a' lub od 1 i
więcej liter 'b':
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
Wynik wykonania kodu:
'! ! ! ! axx'
Przykład
W tym przykładzie wzorzec wyszukiwania jest następujący: jedna lub więcej liter lub trzy cyfry:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
Wynik wykonania kodu:
'! ! ! 1 12 !'
Przykład
Pionowa kreska może dzielić wyrażenie regularne nie na dwie części, ale na dowolną liczbę części:
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
Wynik wykonania kodu:
'! ! ! 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':
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
Wynik wykonania kodu:
'! ! ! exx'
Zadania praktyczne
Dany jest ciąg znaków:
txt = '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.
Dany jest ciąg znaków:
txt = '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.