Символ шляпки внутри наборов в регулярках 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'
Напишите регулярку, которая найдет строки по шаблону: не шляпка и не пробел, а затем две латинских буквы.