gpt4 book ai didi

grails - 如何从groovy中的字符串中提取带有数字的给定字符串数组

转载 作者:行者123 更新时间:2023-12-02 14:39:04 27 4
gpt4 key购买 nike

我正在尝试检查 commit-msg来自 git 的包含特定票号,项目 key 为 Jira在 Jenkins 管道中使用 groovy

def string_array = ['CO', 'DEVOPSDESK', 'SEC', 'SRE', 'SRE00IN', 'SRE00EU', 'SRE00US', 'REL']
def string_msg = 'CO-10389, CO-10302 new commit'

要提取数字,我使用以下逻辑。
findAll( /\d+/ )*.toInteger()

不确定如何使用项目 key 提取确切的票号。
提前致谢。

最佳答案

您可以使用 Groovy 的查找运算符 - =~ , 结合 findAll()方法来提取所有匹配的元素。为此,您可以创建一个匹配 CO-\d+ 的模式。或 DEOPSDESK-\d+或者……等等。您可以将项目 ID 保存在列表中,然后动态创建正则表达式模式。

考虑以下示例:

def projectKeys = ['CO', 'DEVOPSDESK', 'SEC', 'SRE', 'SRE00IN', 'SRE00EU', 'SRE00US', 'REL']
def commitMessage = 'CO-10389, CO-10302 new commit'

// Generate a pattern "CO-\d+|DEVOPSDEKS-\d+|SEC-\d+|...
def pattern = projectKeys.collect { /${it}-\d+/ }.join("|")

// Uses =~ (find) operator and extracts matching elements
def jiraIds = (commitMessage =~ pattern).findAll()

assert jiraIds == ["CO-10389","CO-10302"]

// Another example
assert ("SEC-1,REL-2001 some text here" =~ pattern).findAll() == ["SEC-1","REL-2001"]

关于grails - 如何从groovy中的字符串中提取带有数字的给定字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59677003/

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