简体   繁体   English

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

[英]Groovy split with RegEx get string between 2 other strings

I have a question, i also searched a long time to get the answer. 我有一个问题,我也搜索了很长时间才能得到答案。 But nothing was working for me. 但是什么都没有为我工作。 I hope someone can help me please. 我希望有人能帮助我。

I hava a very long String like this: 我有一个很长的字符串,像这样:

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

now i want to get all values after "name". 现在我想获取“名称”之后的所有值。 In this little example it is then "version1" and "fix1". 在这个小例子中,它是“ version1”和“ fix1”。 I try to do this with regex. 我尝试使用正则表达式来做到这一点。 But it seems that i am doing something wrong. 但是,看来我做错了。 Programming language is GROOVY. 编程语言是GROOVY。

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

As you can see i try to filter between "name":" and "," 如您所见,我尝试在“ name”:“和”,“之间进行过滤

But my RegEx is not working correctly. 但是我的RegEx无法正常工作。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM