Команда 'или' в регулярных выражениях 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'
любое количество раз.