Многострочность в регулярках Dart
Регулярки при работе с многострочными строками имеют свои особенности. Разберем их на примере следующей строки, содержащей обычные символы, символы перевода строк и табуляции:
var txt = """111
222;
333;
444"""
Символы перевода строки можно поймать с
помощью команды '\n':
var res = txt.replaceAll(RegExp(r'\n'), "!");
print(res);
В результате выведется следующая строка (промежутки между строками - это табуляция):
'111! 222! 333! 444';
Символы табуляции можно поймать с использованием
команды '\t':
var res = txt.replaceAll(RegExp(r'\t'), "!");
print(res);
Результат выполнения кода:
"""
!111;
!222;
!333;
!444;
"""
Команда '.' для многострочной строки
не ловит символы перевода строки:
var res = txt.replaceAll(RegExp(r'.'), "!");
print(res);
Результат выполнения кода:
"""
!!!;
!!!!;
!!!!;
!!!!;
"""
Чтобы поймать все символы в многострочной
строке, используется хитрый прием в виде
сочетания [\s\S]. Такая конструкция
найдет все обычные символы и все переводы
строк:
var res = txt.replaceAll(RegExp(r'[\s\S]'), "!");
print(res);
Результат выполнения кода:
'!!!!!!!!!!!!!!!!!!';
Команда '$' в многострочном режиме
будет ловить конец каждой строки:
var res = txt.replaceAll(RegExp(r'$'), "!");
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;
"""