我正在尝试找到一个正则表达式来拆分对方法的调用
boo(a,b), c
所以它会返回
boo(a,b)
和
c
被它分开后。可以用正则表达式来做吗?谢谢。
正则语言不能表达递归。当您意识到解决方案将涉及递归时,不可能在“纯”正则表达式引擎中表达这一点(实际上,大多数正则表达式引擎都有某种扩展以允许有限地违反此规则)。
既然您是在 Java 上下文中编写的 - 为什么不使用漂亮的编程语言来执行这个相当简单的字符串操作,而不是尝试将正则表达式硬塞到解决方案中呢?:)
我不确定你对你的问题真正想要什么,但在给定的情况下:
"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 次和一个右括号,则您不接受匹配。
结果是一个包含["boo(a(a,b),b)","c"]
.