Groovy разделить с RegEx получить строку между 2 другими строками - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть вопрос, я тоже долго искал ответ.Но у меня ничего не получалось.Я надеюсь, что кто-то может помочь мне, пожалуйста.

У меня есть очень длинная строка, подобная этой:

"... {"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 голосов
/ 13 сентября 2018
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...