Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktSpRgMl 50 of 299 menu
◀ ▶

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

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

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

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

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

val res = Regex("\\n").replace(txt, "!") println(res)

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

'111! 222! 333! 444'

Табуляция

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

val res = Regex("\\t").replace(txt, "!") println(res)

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

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

Работа точки

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

val res = Regex(".").replace(txt, "!") println(res)

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

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

Любой символ

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

val res = Regex("[\\s\\S]").replace(txt, "!") println(res)

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

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

Доллар

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

val res = Regex("$").replace(txt, "!") println(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 '''
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить