gpt4 book ai didi

java - 正则表达式替换为捕获重复组

转载 作者:行者123 更新时间:2023-11-29 08:53:23 25 4
gpt4 key购买 nike

我截取了以下 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])

我一直在尝试对重复的组使用捕获,但仍然无法正常工作。你能告诉我缺少什么吗?

最佳答案

在这里;正则表达式定义;

regex :  new\s+OfferBuilder\(\)(\.[^\s]*\([^\s]*\))*

检测你的:

new OfferBuilder().id(1)
.rulesId(1)
.secondaryRulesId(0L)
.code("test code")
.characteristics([characteristics])
.build()

对于对象参数使用:

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

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

关于java - 正则表达式替换为捕获重复组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21583474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com