# Символ шляпки внутри наборов в регулярках Python

Как вы знаете, шляпка внутри `[ ]` делает отрицание, будучи написанной в начале скобок. Значит, она является спецсимволом внутри этих скобок. Чтобы получить шляпку как символ, нужно или заэкранировать ее, или убрать с первого места.

## Пример

В следующем примере шаблон поиска такой: первый символ - это все кроме `'d'`, потом две буквы `'x'`:

`txt = 'axx bxx ^xx dxx' res = re.sub('[^d]xx', '!', txt) print(res)`

В результате в переменную запишется следующее:

`'! ! ! dxx'`

## Пример

А теперь шаблон поиска такой: первый символ - это `'d'` или `'^'`, потом две буквы `'x'`:

`txt = 'axx bxx ^xx dxx' res = re.sub('[d^]xx', '!', txt) print(res)`

В результате в переменную запишется следующее:

`'axx bxx ! !'`

## Пример

Можно не убирать шляпку с первого места, а просто заэкранировать ее с помощью обратного слеша, и она станет обозначать саму себя:

`txt = 'axx bxx ^xx dxx' res = re.sub('[\^d]xx', '!', txt) print(res)`

В результате в переменную запишется следующее:

`'axx bxx ! !'`

## Практические задачи

Дана строка:

`txt = '^xx axx ^zz bkk @ss'`

Напишите регулярку, которая найдет строки по шаблону: шляпка или собака, а затем две латинских буквы.

Дана строка:

`txt = '^xx axx ^zz bkk @ss'`

Напишите регулярку, которая найдет строки по шаблону: НЕ шляпка и не собака, а затем две латинских буквы.

Дана строка:

`txt = '^xx axx ^zz bkk'`

Напишите регулярку, которая найдет строки по шаблону: не шляпка и не пробел, а затем две латинских буквы.

← →
↑