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

Несохраняющие скобки в Java

Обычные круглые скобки в шаблоне одновременно группируют часть выражения и создают группу, к которой потом можно обратиться через group(n). Если нужна только группировка, используют несохраняющие скобки (?:...):

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String txt = "abab123"; Pattern pattern = Pattern.compile("(ab)+([1-9]+)"); Matcher matcher = pattern.matcher(txt); if (matcher.find()) { System.out.println(matcher.groupCount()); System.out.println(matcher.group(1)); System.out.println(matcher.group(2)); } } }

Здесь group(1) содержит повторяющуюся часть "ab", а group(2) - число. Если первая пара скобок нужна только для повторения, ее заменяют на (?:ab)+:

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String txt = "abab123"; Pattern pattern = Pattern.compile("(?:ab)+([1-9]+)"); Matcher matcher = pattern.matcher(txt); if (matcher.find()) { System.out.println(matcher.groupCount()); System.out.println(matcher.group(1)); } } }

После замены остается одна группа с числом. Несохраняющие скобки удобны, когда повторение или альтернатива нужны в шаблоне, но отдельная группа для этой части не требуется.

Дана строка:

String txt = "xyxy12";

Сделайте шаблон, который найдет повторяющуюся часть "xy" и число после нее, но сохранит в группе только число.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить