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

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

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

public class Main { public static void main(String[] args) { String txt = ""; 222; 333; 444'''; } }

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

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { Pattern pattern = Pattern.compile("\\n"); Matcher matcher = pattern.matcher(txt); String res = matcher.replaceAll("!"); System.out.println(res); } }

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

"111! 222! 333! 444"

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

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { Pattern pattern = Pattern.compile("\\t"); Matcher matcher = pattern.matcher(txt); String res = matcher.replaceAll("!"); System.out.println(res); } }

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

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

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

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { Pattern pattern = Pattern.compile("."); Matcher matcher = pattern.matcher(txt); String res = matcher.replaceAll("!"); System.out.println(res); } }

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

'''; !!!; !!!!; !!!!; !!!!; ''';

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

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { Pattern pattern = Pattern.compile("[\\s\\S]"); Matcher matcher = pattern.matcher(txt); String res = matcher.replaceAll("!"); System.out.println(res); } }

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

"!!!!!!!!!!!!!!!!!!"

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

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { Pattern pattern = Pattern.compile("$"); Matcher matcher = pattern.matcher(txt); String res = matcher.replaceAll("!"); System.out.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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить