АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP или фреймворки. Сегодня последний день для записи! Жми!
⊗pyPmREMl 50 of 129 menu
Долгожданный Бесплатный курс по выкладке сайта на хостинг. МЫ УЖЕ НАЧАЛИ! Присоединяйтесь к нам!

Многострочность в регулярках Python

Регулярки при работе с многострочными строками имеют свои особенности. Давайте с ними разбираться на примере следующей строки, содержащей обычные символы, символы перевода строк и табуляции:

txt = '''111 222 333 444'''

Перевод строки

Символы перевода строки можно поймать с помощью команды '\n':

res = re.sub('\n', '!', txt) print(res)

В результате выведется следующая строка (промежутки между строками - это табуляция):

'111! 222! 333! 444'

Табуляция

Символы табуляции можно поймать с помощью команды '\t':

res = re.sub('\t', '!', txt) print(res)

Результат выполнения кода:

''' !111 !222 !333 !444 '''

Работа точки

Команда '.' для многострочной строки не ловит символы перевода строки:

res = re.sub('.', '!', txt) print(res)

Результат выполнения кода:

''' !!! !!!! !!!! !!!! '''

Любой символ

Чтобы поймать все символы в многострочной строке, используется хитрый прием в виде сочетания [\s\S]. Такая конструкция найдет все обычные символы и все переводы строк:

res = re.sub('[\s\S]', '!', txt) print(res)

Результат выполнения кода:

'!!!!!!!!!!!!!!!!!!'

Доллар

Команда '$' в многострочном режиме будет ловить конец каждой строки:

res = re.sub('$', '!', txt) print(res)

Результат выполнения кода:

''' 111! 222! 333! 444! '''

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

Дана строка:

''' abc def ghi jkl '''

Напишите регулярку, которая сделает из этой строки следующую:

''' abc! def! ghi! jkl! '''

Дана строка:

''' abc def ghi jkl '''

Напишите регулярку, которая сделает из этой строки следующую:

''' ! abc ! def ! ghi ! jkl '''

Дана строка:

''' abc def ghi jkl '''

Напишите регулярку, которая сделает из этой строки следующую:

'''! abc def ghi jkl !'''

Дана строка:

''' abc def ghi jkl '''

Напишите регулярку, которая сделает из этой строки следующую:

'''! ! abc ! def ! ghi ! jkl !'''

Дана строка:

''' abc def ghi jkl '''

Напишите регулярку, которая сделает из этой строки следующую:

'''! abc! def! ghi! jkl! !'''

Дана строка:

''' abc def ghi jkl '''

Напишите регулярку, которая сделает из этой строки следующую:

''' !abc !def !ghi !jkl '''
enru