Команда 'или' у регуларним изразима Пајтона

Команда '|', која представља снажнију варијанту 'или' у поређењу са командом [ ]. Ова команда омогућава да се регуларни израз подели на неколико делова. При томе тражени део може да одговара или једном делу регуларног израза, или другом. Погледајмо на примерима.

Пример

У овом примеру шаблон за претрагу је: три слова 'a' или три слова 'b':

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

print(res)

Резултат извршавања кода:

python'! ! abb'

Пример

У овом примеру шаблон за претрагу је: три слова 'a' или од 1 и више слова 'b':

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

print(res)

Резултат извршавања кода:

python'! ! ! ! axx'

Пример

У овом примеру шаблон за претрагу је: једно или више слова или три цифре:

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

print(res)

Резултат извршавања кода:

python'! ! ! 1 12 !'

Пример

Вертикална црта може да подели регуларни израз не на два дела, већ на било који број делова:

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

print(res)

Резултат извршавања кода:

python'! ! ! ddd'

Пример

Ако се вертикална црта налази унутар заобљених заграда, онда 'или' ради само унутар тих заграда.

За пример да пронађемо низове по следећем шаблону: на почетку стоји или 'a', или 'b' једном или више пута, а затим два слова 'x':

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

print(res)

Резултат извршавања кода:

python'! ! ! exx'

Практични задаци

Задание 1

Дат је низ:

pythontxt = 'aeeea aeea aea axa axxa axxxa'

Напишите регуларни израз који ће пронаћи низове према шаблону: на ивицама стоје слова 'a', а између њих - или слово 'e' било који број пута или слово 'x' било који број пута.

Задание 2

Дат је низ:

pythontxt = 'aeeea aeea aea axa axxa axxxa'

Напишите регуларни израз који ће пронаћи низове према шаблону: на ивицама стоје слова 'a', а између њих - или слово 'e' два пута или слово 'x' било који број пута.