我正在努力将带括号的字符串转换为f(d(a c(b))e)Java 中的 Tree 数据结构(我正在研究一种允许使用字符串表示来实例化 Tree 的方法)。在上面的字符串中,f是树的根节点,它分支成一个子树 atd和一个叶节点 at e。在我能够识别f为当前节点的标签后,我剩下d(a c(b))e.
我希望能够使用 Java 的正则表达式来识别孩子;在这种情况下,d(a c(b))并且e。因此,要求如下。
在字符串中,单个字符后面可能有也可能没有括号。如果后面是括号,则返回里面的所有子字符串,即使它包含嵌套的括号。因此,正则表达式将匹配d(a c(b))or e。
此外,我希望它不仅仅适用于有两个孩子的节点。一个可能的带括号的字符串可能f(a b c)是一棵f以 3 片叶子为根的树。
到目前为止,我有.\(?[^\(\)]\)?,但这不起作用。