regex - Groovy - 如何用正则表达式替换字符串中的元素
问题描述
我正在尝试创建一个通用解决方案来增加正则表达式作为参数给出的版本号。到目前为止,正则表达式运行良好,但下一部分返回与原始语法相同的语法,这让我现在发疯了。
代码片段:
def increase(tag, regex, position){
tag[position] = (tag[position] as Integer) + 1
def newTag = tag[0].replaceAll(regex, ???)
return newTag
}
所以,如果我给出这些参数:
// entry params:
tag = ['1.0.RC119', 1, 0, 119 ]
regex = /^(\d+).(\d+).RC(\d+)/
position = 3
结果应该是1.0.RC120
使用这些参数:
tag = [ '1.0u2', 1, 0, 2 ]
regex = /^(\d+).(\d+)u(\d+)/
position = 3
结果应该是1.0u3
我应该给什么replaceAll
作为替代品?
解决方案
您可以用 1+ 位数字拆分字符串,然后将结果列表与tag
项目交错并加入以获得最终字符串:
List combineList(List one, List two) {
def result = [one, two].transpose()
( result += (one - result*.get(0)) ?: (two - result*.get(1)) ).flatten()
}
def increase(tag, regex, position){
tag[position] = (tag[position] as Integer) + 1
return combineList(tag[0].split(/\d+/), tag[1..-1]).join())
}
在线查看Groovy 演示。
推荐阅读
- mongodb - MongoDB 独立与副本集以及如何将数据从独立集迁移到副本集
- sorting - Power BI 桌面中的字段列表排序
- c# - 使用 HttpWebRequest 进行基本身份验证
- c# - c# 8.0 switch 表达式中的多种情况
- python - pyuic5 - 未知的 C++ 类:QfontDatabase
- css - 如何使用自定义 css 修复导航栏列表项
- unit-testing - 如何使用单元测试测试更新方法
- java - 收到消息后如何在spring mqtt集成中停止重复订阅保留消息
- python - 如何在熊猫数据框中重塑
- apache-kafka - 动物园管理员有什么用?