使用RegEx进行Groovy拆分可在其他2个字符串之间获取字符串

时间:2018-09-13 06:41:35

标签: java groovy

我有一个问题,我也搜索了很长时间才能找到答案。但是什么都没有为我工作。我希望有人能帮助我。

我有一个很长的字符串,像这样:

"... {"test":"test","name":"version1","archived":false,"released":false,"projectId":xx5},{"test":"test","name":"fix1","archived":false,"released":false,"projectId":xx5},  ..."

现在我想获取“名称”之后的所有值。在这个小例子中,它是“ version1”和“ fix1”。我尝试使用正则表达式来做到这一点。但是,看来我做错了。 编程语言是GROOVY。

def raiseStarList = []
def regex = '(?<="name":")*(?=",")'
for (String s : response.split(regex)) {
    if ( s.contains("Raise") ) {
        raiseStarList << s
    }
}
println raiseStarList

如您所见,我尝试在“ name”:“和”,“之间进行过滤

但是我的RegEx无法正常工作。

1 个答案:

答案 0 :(得分:0)

def s='''[{"test":"test","name":"version1","archived":false,"released":false,"projectId":"xx5"},{"test":"test","name":"fix1","archived":false,"released":false,"projectId":"xx5"}]'''

//using json parser
def j = new groovy.json.JsonSlurper().parseText(s)
def res = j.collect{it.name}
println res

//using regex
def r = /"name":"([^"]*)"/
def res2=(s=~r).collect{it[1]}
println res2