Группирующие скобки в регулярках Java
В предыдущих примерах операторы повторения действовали только на один символ, который стоял перед ними. Что делать, если нужно подействовать им на несколько символов?
Для этого существуют группирующие скобки
'(' и . Они работают так:
если что-то стоит в группирующих скобках
и сразу после ')'')' стоит оператор
повторения - он подействует на все, что
стоит внутри скобок.
В следующем примере шаблон поиска выглядит
так: буква 'x', далее строка
'ab' один или более раз, потом буква
'x':
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String txt = "xabx xababx xaabbx";
Pattern pattern = Pattern.compile("x(ab)+x");
Matcher matcher = pattern.matcher(txt);
String res = matcher.replaceAll("!");
System.out.println(res);
}
}
Результат выполнения кода:
"! ! xaabbx"
Дана строка:
public class Main {
public static void main(String[] args) {
String txt = "ab abab abab abababab abea";
}
}
Напишите регулярку, которая найдет строки
по шаблону: строка 'ab' повторяется
1 или более раз.