Введение в регулярные выражения в Java
Регулярное выражение - это текстовый
шаблон для поиска, проверки и замены
фрагментов строки. В Java с шаблонами
работают классы Pattern и Matcher из пакета
java.util.regex. Шаблон получают вызовом
Pattern.compile со строкой регулярки.
Шаблон состоит из обычных символов, которые совпадают сами с собой, и специальных символов - коротких команд вроде точки или звездочки. Специальные символы задают классы символов, повторения и границы текста.
Замену по шаблону выполняет метод replaceAll
у Matcher: компилируют шаблон,
создают Matcher для исходной строки
и передают текст замены. Простейший
пример выглядит так:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("a");
Matcher matcher = pattern.matcher("bab");
String res = matcher.replaceAll("!");
System.out.println(res);
}
}
Результат выполнения кода:
b!b
Буквы и цифры в шаблоне обозначают те же
символы в тексте. Заменим цифру 2
на "!":
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("2");
Matcher matcher = pattern.matcher("12abc3");
String res = matcher.replaceAll("!");
System.out.println(res);
}
}
Точка в шаблоне - специальный символ: она
обозначает любой один символ. Найдем
фрагмент по шаблону буква "x",
любой символ, буква "x" и заменим
его на "!":
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("x.x");
Matcher matcher = pattern.matcher("xax eee");
String res = matcher.replaceAll("!");
System.out.println(res);
}
}
Дана строка:
public class Main {
public static void main(String[] args) {
String txt = "ahb acb aeb aeeb adcb axeb";
}
}
Напишите регулярку, которая найдет строки
"ahb", "acb", "aeb"
по шаблону: буква "a", любой
символ, буква "b".
Дана строка:
public class Main {
public static void main(String[] args) {
String txt = "aba aca aea abba adca abea";
}
}
Напишите регулярку, которая найдет строки
"abba", "adca", "abea"
по шаблону: буква "a", 2
любых символа, буква "a".
Дана строка:
public class Main {
public static void main(String[] args) {
String txt = "aba aca aea abba adca abea";
}
}
Напишите регулярку, которая найдет строки
"abba" и "abea", не захватив
"adca".