Каманда 'ці' ў рэгулярных выразах Python
Каманда '|', якая представляе
сабой больш магутны варыянт 'ці'
у параўнанні з камандай [ ]. Гэтая каманда
дазваляе падзяліць рэгулярку на некалькі
часткаў. Пры гэтым шукаемае можа трапіць
альбо пад адну частку рэгуляркі, альбо пад
іншую. Давайце паглядзім на прыкладах.
Прыклад
У гэтым прыкладзе шаблон пошуку такі:
тры літары 'a' ці тры літары
'b':
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
Вынік выканання кода:
'! ! abb'
Прыклад
У гэтым прыкладзе шаблон пошуку такі:
тры літары 'a' ці ад 1 і
больш літар 'b':
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
Вынік выканання кода:
'! ! ! ! axx'
Прыклад
У гэтым прыкладзе шаблон пошуку такі: адна ці больш літары ці тры лічбы:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
Вынік выканання кода:
'! ! ! 1 12 !'
Прыклад
Вертыкальная рыса можа дзяліць рэгулярку не на дзве часткі, а на любую колькасць часткаў:
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
Вынік выканання кода:
'! ! ! ddd'
Прыклад
Калі вертыкальная рыса стаіць унутры круглых
дужак, то 'ці' працуе толькі
ўнутры гэтых дужак.
Для прыкладу давайце знойдзем радкі па
наступным шаблоне: у пачатку стаіць ці
'a', ці 'b' адзін ці больш
раз, а потым дзве літары 'x':
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
Вынік выканання кода:
'! ! ! exx'
Практычныя задачы
Дадзены радок:
txt = 'aeeea aeea aea axa axxa axxxa'
Напішыце рэгулярку, якая знойдзе радкі
па шаблоне: па краях стаяць літары
'a', а паміж імі - ці літара
'e' любую колькасць разоў ці літара
'x' любую колькасць разоў.
Дадзены радок:
txt = 'aeeea aeea aea axa axxa axxxa'
Напішыце рэгулярку, якая знойдзе радкі
па шаблоне: па краях стаяць літары
'a', а паміж імі - ці літара
'e' два разы ці літара 'x'
любую колькасць разоў.