Каманда 'ці' ў рэгулярных выразах Python

Каманда '|', якая представляе сабой больш магутны варыянт 'ці' у параўнанні з камандай [ ]. Гэтая каманда дазваляе падзяліць рэгулярку на некалькі часткаў. Пры гэтым шукаемае можа трапіць альбо пад адну частку рэгуляркі, альбо пад іншую. Давайце паглядзім на прыкладах.

Прыклад

У гэтым прыкладзе шаблон пошуку такі: тры літары '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' любую колькасць разоў.