Инвертирование наборов символов в регулярках
С помощью шляпки '^'
в начале
квадратных скобок можно инвертировать
желаемое. Если, к примеру, команда [ab]
ищет букву 'a'
или 'b'
, то
команда [^ab]
будет искать все
символы, кроме 'a'
и 'b'
.
Пример
В данном примере шаблон поиска выглядит
так: буква 'x'
, затем НЕ буква
'a'
, не 'b'
и не 'c'
,
потом буква 'z'
:
txt = 'xaz xbz xcz xez'
res = re.sub('x[^abc]z', '!', txt)
print(res)
Результат выполнения кода:
'xax xbx xcx !'
Пример
В данном примере шаблон поиска выглядит
так: буква 'x'
, затем НЕ маленькая
латинская буква, потом буква 'z'
:
txt = 'xaz xbz x1z xСz'
res = re.sub('x[^a-z]z', '!', txt)
print(res)
Результат выполнения кода:
'xaz xbz ! !'
Практические задачи
Напишите регулярку, которая найдет строки
по шаблону: цифра 1
, затем символ
не 'e'
и не 'x'
, цифра
2
.
Напишите регулярку, которая найдет строки
по шаблону: буква 'x'
, затем НЕ
цифра от 2
до 7
, буква
'z'
.
Напишите регулярку, которая найдет строки
по шаблону: буква 'x'
, затем НЕ
большая латинская буква от 1
и более
раз, буква 'z'
.
Напишите регулярку, которая найдет строки
по шаблону: буква 'x'
, затем НЕ
большая или маленькая латинская буква и
не цифра от 1
до 5
от 1
и более раз, буква 'z'
.