Ваше регулярное выражение не находит соответствия, и группа соответствия 0 не инициализирована. Вам нужно использовать более безопасное регулярное выражение и всегда проверять, есть ли совпадение, прежде чем пытаться получить доступ к какой-либо группе:
def redirectQuery = "&callbackUri=someValue"
def callbackUriMatch = redirectQuery =~ /(?<=[&?]callbackUri=)[^&]*/
if (callbackUriMatch) {
println callbackUriMatch.group()
}
См. Groovy demo
Здесь, [ 111] является java.util.regex.Matcher
объектом. С помощью if (callbackUriMatch)
выполняется проверка, найдено ли совпадение, и, если есть совпадение, вы можете получить доступ к callbackUriMatch.group()
, всему совпадению.
Детали шаблона
(?<=[&?]callbackUri=)
- если вы хотите получить значение параметра запроса, ему должно предшествовать &
или ?
, затем соответствовать вашему значение ключа и =
, и этот шаблон обернут конструкцией lookbehind, которая не добавляет свой сопоставленный текст к значению совпадения [^&]*
- класс отрицательных символов, соответствующий 0 или более символам, отличным от &
]. Вы, вероятно, удалили/переместили некоторые файлы / каталоги непосредственно от файловой системы, а не посредством команд SVN. Это может иногда приводить к каталогу, становящемуся затрудненным, если он не может разработать различия против репозитория.
Попытайтесь выполнить очистку сначала, и если это перестало работать, вернитесь, который пробует каталог и, используют команды SVN для изменения файловой структуры каталога (удаляют/перемещают).
Если .svn подкаталог отсутствует, каталог отмечен затрудненный, поскольку SVN не имеет никакого способа больше знать состояние каталога. Наиболее вероятная очистка или возвращается, не может зафиксировать его, так как локальных svn данных не стало, таким образом, Вы получили две опции: