我有一个问题,我也搜索了很长时间才能找到答案。但是什么都没有为我工作。我希望有人能帮助我。
我有一个很长的字符串,像这样:
"... {"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无法正常工作。
答案 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