首页 > 解决方案 > Groovy 使用 RegEx 拆分获取其他 2 个字符串之间的字符串

问题描述

我有一个问题,我也搜索了很长时间才能得到答案。但没有什么对我有用。我希望有人可以帮助我。

我有一个很长的字符串,如下所示:

"... {"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

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

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

标签: javagroovy

解决方案


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

推荐阅读