Java正则表达式查找方法的参数

时间:2012-05-03 14:58:15

标签: java regex

我正在尝试找一个正则表达式来分割对方法的调用

boo(a,b), c

所以它会返回

boo(a,b)

c
分裂之后

。 是否有可能使用正则表达式? 感谢。

2 个答案:

答案 0 :(得分:4)

常规语言不能表达递归。在您意识到解决方案将涉及递归的时刻,无法在“纯”正则表达式引擎中表达这一点(实际上,大多数正则表达式引擎都有某种扩展以允许有限违反此规则)。

由于你是在Java上下文中编写的 - 为什么不使用漂亮的编程语言来执行这个相当简单的字符串操作,而不是试图shoehorn一个正则表达式进入解? :)

答案 1 :(得分:0)

我不确定你对你的问题的真正想法,但在给定的情况下:

"boo(a,b), c".split("(?<=\\)),") //look for a ',' preceeded by ')'

为您提供包含["boo(a,b)","c"]

的数组

编辑:

对于这种情况: boo(a(a,b),b),c ,使用:

"boo(a(a,b),b),c".split("(?<=\\)),(?!(\\w\\p{Punct}?)+\\))")

(?!(\\w\\p{Punct}?)+\\))表示如果后面跟(一个单词和一个或零标点符号) n次 ,并且 a,则不接受匹配右括号

结果是一个包含["boo(a(a,b),b)","c"]的数组。