Я пытаюсь создать совпадение, чтобы соответствовать регулярному выражению и возвращать определенный индекс, но, несмотря на множество вариантов кода, он либо генерирует исключение, либо только печатает один символов, а не целого слова. Все примеры, которые я нахожу, похожи на то, что я делаю, но мои результаты не похожи на примеры. Вот код:groovy matcher не работает или возвращает одиночные символы, а не целые слова
def RAW = """
policer-profile "GD-1"
bandwidth cir 4992 cbs 32767 eir 4992 ebs 32767
traffic-type all
compensation 0
exit
policer-profile "EIR-1"
bandwidth cir 0 cbs 0 eir 9984 ebs 32767
traffic-type all
compensation 0
exit
shaper-profile "Shaper1"
bandwidth cir 999936 cbs 65535
compensation 0
exit
"""
RAW.split("\n").each() { line ->
def matcher = line =~ /bandwidth cir \d+ cbs \d+/
if (matcher) {
println line[0][2]
}
}
я получаю либо «индекс вне диапазона» или он просто печатает «N» (третий символ) в слове «пропускной способности» для каждой строки, вместо числового значения после " cir "(третье слово). Любая помощь будет принята с благодарностью. Заранее спасибо.
Я попытался добавить. * До конца, и теперь это не похоже на что-либо - я использовал [regexr] (http://regexr.com), чтобы проверить его с помощью группировки (line = ~/regex /), и он работает там, но groovy console, похоже, не узнает его. – wolverene13
Я все еще ничего не получаю при использовании этого кода, может быть, это моя версия groovy console или что-то еще? У меня 2.3.6 – wolverene13