私はJavaを使用しています。入力が(NP (PRP I))
のときは、出力がPRP I
のコードを実装したいと思います。正規表現でネストされた括弧を得る方法
Pattern pattern = Pattern.compile("\\((.?)\\)");
Matcher matcher = pattern.matcher(noun_phrase);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
その出力はNP (PRP I
です: 私の現在の実装では、次のようなものです。
括弧を数えることが1つの可能性を知っていますが、regex
を使用してネストされた括弧内の文字列を取得する方法があるかどうかは疑問です。
最内層だけが必要な場合は、 '\\(([^()] *)\\)'を試してください。 [regex101](https://regex101.com/r/hO4bN7/1)をチェックしてください。 – ClasG
Javaの正規表現は、再帰をサポートしていないため、ネストされた構造を使用した正規表現ではありません。また、ソリューションは入力の可能な構造に依存します。だから、 '(a(b(c(d)e)f)g)'のように、より括弧が入れられているかどうかを知る必要があります。もしそうなら、何が結果になるはずですか? – Pshemo
@Pshemoしかし、入れ子の一定の深さに対処することができます。 –