我正在尝试找一个正则表达式来分割对方法的调用
boo(a,b), c
所以它会返回
boo(a,b)
和
c
分裂之后。 是否有可能使用正则表达式? 感谢。
答案 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"]
的数组。