Фигурные скобки в регулярках Java
Операторы '+', '*', '?'
хороши, однако, с их помощью нельзя указать
конкретное число повторений. В этом случае
вам на помощь придет оператор {}.
Работает он следующим образом: {5}
- пять повторений, {2,5} – повторяется
от двух до пяти (оба включительно), {2,}
- повторяется два и более раз. Посмотрите
примеры:
В данном примере шаблон поиска выглядит
так: буква 'x', буква 'a'
один или два раза, буква 'x':
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String txt = "xx xax xaax xaaax";
Pattern pattern = Pattern.compile("xa{1,2}x");
Matcher matcher = pattern.matcher(txt);
String res = matcher.replaceAll("!");
System.out.println(res);
}
}
Результат выполнения кода:
"xx ! ! xaaax"
В данном примере шаблон поиска выглядит
так: буква 'x', буква 'a'
два раза и более, буква 'x':
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String txt = "xx xax xaax xaaax";
Pattern pattern = Pattern.compile("xa{2,}x");
Matcher matcher = pattern.matcher(txt);
String res = matcher.replaceAll("!");
System.out.println(res);
}
}
Результат выполнения кода:
"xx xax ! !"
В данном примере шаблон поиска выглядит
так: буква 'x', буква 'a'
три раза, буква 'x':
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String txt = "xx xax xaax xaaax";
Pattern pattern = Pattern.compile("xa{3}x");
Matcher matcher = pattern.matcher(txt);
String res = matcher.replaceAll("!");
System.out.println(res);
}
}
Результат выполнения кода:
"xx xax xaax !"
В данном примере шаблон поиска выглядит
так: буква 'a' десять раз:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String txt = "aaa aaaaaaaaaa aaa";
Pattern pattern = Pattern.compile("a{10}");
Matcher matcher = pattern.matcher(txt);
String res = matcher.replaceAll("!");
System.out.println(res);
}
}
Результат выполнения кода:
"aaa ! aaa"
В данном примере есть такой шаблон: буква
'x', буква 'a' три раза раза
и меньше, буква 'x'. Для того,
чтобы его реализовать, перед цифрой 3
можно не указывать число, а поставить
просто запятую:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String txt = "xx xax xaax xaaax";
Pattern pattern = Pattern.compile("xa{,3}x");
Matcher matcher = pattern.matcher(txt);
String res = matcher.replaceAll("!");
System.out.println(res);
}
}
Результат выполнения кода:
"! ! ! !"
Ноль перед 3 тоже допустим:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String txt = "xx xax xaax xaaax";
Pattern pattern = Pattern.compile("xa{0,3}x");
Matcher matcher = pattern.matcher(txt);
String res = matcher.replaceAll("!");
System.out.println(res);
}
}
Результат выполнения кода:
"! ! ! !"
Дана строка:
public class Main {
public static void main(String[] args) {
String txt = "aa aba abba abbba abbbba abbbbba";
}
}
Напишите регулярку, которая найдет строки
'abba', 'abbba', 'abbbba'
и только их.
Дана строка:
public class Main {
public static void main(String[] args) {
String txt = "aa aba abba abbba abbbba abbbbba";
}
}
Напишите регулярку, которая найдет строки
вида 'aba', в которых 'b'
встречается менее 3-х раз (включительно).
Дана строка:
public class Main {
public static void main(String[] args) {
String txt = "aa aba abba abbba abbbba abbbbba";
}
}
Напишите регулярку, которая найдет строки
вида 'aba', в которых 'b'
встречается более 4-х раз (включительно).