Java Regex替换为捕获重复组

Java Regex替换为捕获重复组,java,regex,groovy,intellij-idea,Java,Regex,Groovy,Intellij Idea,我截取了以下Java代码: def offer = new OfferBuilder().id(1) .rulesId(1) .secondaryRulesId(0L) .code("test code") .characteristics([characte

我截取了以下Java代码:

def offer = new OfferBuilder().id(1)
                              .rulesId(1)
                              .secondaryRulesId(0L)
                              .code("test code")
                              .characteristics([characteristics])
                              .build()
我想用以下Groovy替换它:

def offer = new Offer(id: 1, rulesId: 1, secondaryRulesId: 0L, code: "test code", characteristics: [characteristics])
我正在使用Intellij内置正则表达式替换:

new (\w+)Builder\((\)\s?\.(\w+)\(([a-zA-Z0-9\" \[\]]+))+\).build\(\)
替换字符串:

new $1($3: $4)
问题是我只能替换匹配组的最后一次出现,以便它输出:

def offer = new Offer(characteristics: [characteristics])
我一直试图在重复的gruoup上使用捕获,但仍然无法使其工作。你能告诉我缺少什么吗?

这里; 正则表达式定义

regex :  new\s+OfferBuilder\(\)(\.[^\s]*\([^\s]*\))*
检测您的:

new OfferBuilder().id(1)
                              .rulesId(1)
                              .secondaryRulesId(0L)
                              .code("test code")
                              .characteristics([characteristics])
                              .build()
对于对象参数,请使用:

(\.[^\s]*\([^\s]*\))*

然后解析每一个匹配的参数。

您可能会得到一个答案,遗憾的是,大多数正则表达式没有提供您想要的功能:\这里需要一种编程语言来消除正则表达式的重复