Проверьте, сколько существует групп соответствия регулярному выражению, а затем используйте их - PullRequest
0 голосов
/ 23 февраля 2019

Я ищу соответствие регулярному выражению в Groovy, проверьте, сколько групп было возвращено, затем используйте одну из этих групп, но получаю:

java.lang.IllegalStateException: No match found

, если я позвоню match.groupCount() до match.group(1)

def match = "Some text" =~ /(text)/
if (match.groupCount() >= 1) {
    print match.group()  // error
}

// or

def match = "Some text" =~ /(text)/
if (match) {
    print match.group()  // success
}

1 Ответ

0 голосов
/ 23 февраля 2019

проблема в вашем первом варианте, что перед вызовом groupCount() вы должны позвонить find() или matches()

def match = "Some text" =~ /(text)/
if (match.find()) {
    println match.groupCount()
    print match.group()  // error
}

if (match) {...} из вашего второго случая на самом деле вызывает asBoolean(), который вызывает find() на совпадении

и есть несколько более простых вариантов

("Some text 2 text" =~ /text/).each{
    println it
}

или

println (("Some text 2 text" =~ /text/).collect())
...