2016-07-18 40 views
1

我正在使用Jenkins并希望匹配名称以“_TEST”结尾但无法通过正则表达式匹配的所有可构建作业。使用groovy匹配字符串的末尾

我已经尝试了几种方法,但一直没能通过groovy来匹配它。

+1

你能添加你已经尝试的代码?它将帮助我们精确地回答你的问题。 –

+0

正则表达式还是Groovy?他们是如此不一样! [正则表达式](https://en.wikipedia.org/wiki/Regular_expression)是进行字符串搜索/比较的表达式语法。 [Groovy](http://www.groovy-lang.org/)是一种完整的编程语言。 – Andreas

+0

我开始使用正则表达式在groovy脚本中进行匹配。后来我跑过了ensWith()函数,并为我工作。 – Kithral

回答

1

等效的,但更简洁的解决方案比this one

import hudson.model.* 

def list = Hudson.instance 
       .items 
       .findAll { it.buildable && it.name.endsWith("_TEST") } 
       .collect { it.name } 
+0

我喜欢这种简单性。我怎么才能让它给我只是工作的名字?输出如下所示:[email protected] [Build_Job_TEST] – Kithral

+0

我不编写一个新的答案,我编辑了这个使用'collect',它将每个对象转换成它的名字。格式化只是为了说明Stack Overflow上的代码而有些奇怪,并不一定是惯用的。 –

0

我实际上发现了一个不同的方式来解决我的问题。对不起,周一早晨:)

import hudson.model.* 

def list = [] 

for (item in Hudson.instance.items.findAll()) { 
    if (item.name.endsWith("_TEST")) { 
    if (item.isBuildable()) { 
     list.push(item.name) 
    } 
    } 
} 

return list 
+3

“groovy way”:'Hudson.instance.items.findAll {it.isBuildable()&& it.name.endsWith(“_ TEST”)}' –

相关问题