我有一个表示我正在尝试解析的函数调用的String。每个参数可以是另一个函数调用,也可以是单个单词。我想写一个将检索名称的算法,并拆分args。
class FunctionCall{
String name;
String[] args;
}
function parseFunction(String func){
FunctionCall fc = new FunctionCall();
fc.name = func.subString(0,func.indexOf("("))
fc.args = ???
}
函数调用看起来像func1(func2(arg1, arg2),func3(func4(arg3)),arg4)
,我希望String[] args
包含func2(arg1, arg2)
,func3(func4(arg3))
和arg4
。
由于函数调用的递归特性,我不相信正则表达式是可行的。
我用Java编写代码,但其他语言也没问题。
答案 0 :(得分:0)
似乎我找到了here
所描述的答案我需要逐个解析字符,并计算左括号的数量。如果我没有打开括号时遇到逗号,那么我应该分开这一点。
答案 1 :(得分:0)
(?:^[^\(\)]*?\()?(?:(.*?\)),|(.*?)\)$)
你可以尝试这个。它匹配当前的输入。可能需要更多的输入模式来测试。
参见演示。