Java Regex替换为捕获重复组
我截取了以下Java代码: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
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]*\))*
然后解析每一个匹配的参数。您可能会得到一个答案,遗憾的是,大多数正则表达式没有提供您想要的功能:\这里需要一种编程语言来消除正则表达式的重复