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

← →
↑