Kommandoen 'eller' i regulære uttrykk i Python

Kommandoen '|', som representerer en mer kraftfull variant av 'eller' sammenlignet med kommandoen [ ]. Denne kommandoen tillater å dele det regulære uttrykket i flere deler. Samtidig kan det søkte falde enten inn under en del av det regulære uttrykket, eller under en annen. La oss se på eksempler.

Eksempel

I dette eksemplet er søkemønsteret slik: tre bokstaver 'a' eller tre bokstaver 'b':

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

print(res)

Resultatet av kodekjøringen:

python'! ! abb'

Eksempel

I dette eksemplet er søkemønsteret slik: tre bokstaver 'a' eller fra 1 og flere bokstaver 'b':

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

print(res)

Resultatet av kodekjøringen:

python'! ! ! ! axx'

Eksempel

I dette eksemplet er søkemønsteret slik: en eller flere bokstaver eller tre sifre:

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

print(res)

Resultatet av kodekjøringen:

python'! ! ! 1 12 !'

Eksempel

Den vertikale streken kan dele det regulære uttrykket ikke i to deler, men i et hvilket som helst antall deler:

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

print(res)

Resultatet av kodekjøringen:

python'! ! ! ddd'

Eksempel

Hvis den vertikale streken står innenfor runde parenteser, så virker 'eller' bare innenfor disse parentesene.

La oss som et eksempel finne strenger etter følgende mønster: i begynnelsen står enten 'a', eller 'b' en eller flere ganger, og deretter to bokstaver 'x':

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

print(res)

Resultatet av kodekjøringen:

python'! ! ! exx'

Praktiske oppgaver

Задание 1

Gitt en streng:

pythontxt = 'aeeea aeea aea axa axxa axxxa'

Skriv et regulært uttrykk som vil finne strenger etter mønsteret: ved kantene står bokstaver 'a', og mellom dem - enten bokstaven 'e' et hvilket som helst antall ganger eller bokstaven 'x' et hvilket som helst antall ganger.

Задание 2

Gitt en streng:

pythontxt = 'aeeea aeea aea axa axxa axxxa'

Skriv et regulært uttrykk som vil finne strenger etter mønsteret: ved kantene står bokstaver 'a', og mellom dem - enten bokstaven 'e' to ganger eller bokstaven 'x' et hvilket som helst antall ganger.