从String中的括号中提取字符串

时间:2017-11-10 18:23:20

标签: java regex

我正在研究自己的小脚本语言。现在我一直在阅读脚本阅读器,脚本阅读器读取文件并将其转换为脚本部分(变量,函数,if子句等)。我hava String将脚本文件内容保存在一行中,如下所示:

mega = "";test(){hallo();test = "";if(){p2 = -1;}else{p1 = "";}hi = 0;}

现在我的问题。我想获取if子句和函数(围绕if子句)的括号之间的字符串。我试用了正则表达式:

Matcher m = Pattern.compile("\\(([^)]+)\\)").matcher(example);
 while(m.find()) {
   System.out.println(m.group(1));    
 }

然后我得到函数test(){的第一个括号和第一个括起if子句的括号之间的内容。如何在if子句,else子句和函数之间提取字符串?

修改

这是希望我想在提取后离开:

对于If:p2 = -1; 对于其他人:p1 = ""; 对于函数arround:

hallo();test = "";if(){p2 = -1;}else{p1 = "";}hi = 0;

编辑2: 我想将它递归到它的无穷无尽(在if子句中是另一个等等。)

1 个答案:

答案 0 :(得分:0)

我认为正则表达式不会这样做。你正在寻找对应的大括号对。 让我想起了RegEx match open tags except XHTML self-contained tags