我嘗試從提交訊息中提取影像陣列/串列:
String commitMsg = "#build #images = image-a, image-b,image_c, imaged , image-e #setup=my-setup fixing issue with px"
我想獲得一個包含以下內容的串列:
["image-a", "image-b", "image_c", "imaged", "image-e"]
筆記:
A) 應該在逗號 (,) 之前/之后允許一個空格
B)確保#images = 存在但將其從組中排除
C)我還在搜索其他引數,如#build 和#setup,所以在查找#images 時我需要忽略它們
到目前為止,我所擁有的是:
/(?i)#images\s?=\s?<HERE IS THE MISSING LOGIC>/
我使用 find() 方法:
def matcher = commitMsg =~ /(?i)#images\s?=\s?([^,] )/
if(matcher.find()){
println(matcher[0][1])
}
uj5u.com熱心網友回復:
您可以使用
(?i)(?:\G(?!^)\s?,\s?|#images\s?=\s?)(\w (?:-\w )*)
請參閱正則運算式演示。詳情:
(?i)- 不區分大小寫模式(?:\G(?!^)\s?,\s?|#images\s?=\s?)- 前一個正則運算式匹配的結尾和兩端用單個可選空格括起來的逗號,或者兩端用單個可選空格括起來的#images字串和=字符(\w (?:-\w )*)- 第 1 組:一個或多個單詞字符后跟零個或多個重復-和一個或多個單詞字符。
查看Groovy 演示:
String commitMsg = "#build #images = image-a, image-b,image_c, imaged , image-e #setup=my-setup fixing issue with px"
def re = /(?i)(?:\G(?!^)\s?,\s?|#images\s?=\s?)(\w (?:-\w )*)/
def res = (commitMsg =~ re).collect { it[1] }
print(res)
輸出:
[image-a, image-b, image_c, imaged, image-e]
另一種 Groovy 代碼:
String commitMsg = "#build #images = image-a, image-b,image_c, imaged , image-e #setup=my-setup fixing issue with px"
def re = /(?i)(?:\G(?!^)\s?,\s?|#images\s?=\s?)(\w (?:-\w )*)/
def matcher = (commitMsg =~ re).collect()
for(m in matcher) {
println(m[1])
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/457099.html
標籤:正则表达式 解析 时髦的 jenkins-groovy
下一篇:SAS在正則運算式中使用$
