Я использую Java, и я хотел бы реализовать код, выход которого PRP I
, когда вход (NP (PRP I))
. Моя текущая реализация, как следующее:Как получить только вложенную скобку в regex
Pattern pattern = Pattern.compile("\\((.?)\\)");
Matcher matcher = pattern.matcher(noun_phrase);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
и его выход NP (PRP I
.
Я знаю, что одной возможностью было бы считать круглые скобки, но мне интересно, есть ли способ получить только строку внутри вложенных круглых скобок, используя regex
.
Если вам нужен только самый внутренний уровень, попробуйте '\\ (([^()] *) \\)'. Проверьте [regex101] (https://regex101.com/r/hO4bN7/1). – ClasG
Regex в Java - это не решетка с вложенными структурами, поскольку она не поддерживает рекурсию. Также решение будет зависеть от возможной структуры вашего ввода. Поэтому нам нужно знать, может ли он иметь более вложенные круглые скобки, такие как '(a (b (c (d) e) f) g)'. Если да, то что должно быть результатом? – Pshemo
@Pshemo это может иметь дело с фиксированной глубиной гнездования. –