0

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

boo(a,b), c

所以它会返回

boo(a,b)

c

被它分开后。可以用正则表达式来做吗?谢谢。

4

2 回答 2

4

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

既然您是在 Java 上下文中编写的 - 为什么不使用漂亮的编程语言来执行这个相当简单的字符串操作,而不是尝试将正则表达式硬塞到解决方案中呢?:)

于 2012-05-03T15:08:59.343 回答
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 次一个右括号,则您不接受匹配。

结果是一个包含["boo(a(a,b),b)","c"].

于 2012-05-03T15:16:08.147 回答