Синтаксис для выполнения регулярного выражения над строкой и сохранения перехвата в переменной:
var = string =~ /regex/
Например, используя ваш пример строки project-x.y.z-TEST.ext
, где вы хотите сохранить перехватв переменной мы могли бы сделать:
var = 'project-x.y.z-TEST.ext' =~ /-([A-Z]+)\.ext/
Это вернуло бы true
для успешной проверки регулярного выражения, а затем захватило TEST
.Строка TEST
будет затем присвоена переменной var
.
Если строка имени файла была назначена переменной filename
, мы изменим это следующим образом:
var = filename =~ /-([A-Z]+)\.ext/
Однако, поскольку ваша первоначальная проблема, как указано, состоит в простой проверке, содержит ли имя файла строку, то, что вам, вероятно, действительно нужно здесь, - это проверить строку в имени файла и сохранить логический результат.Это вместо того, чтобы хранить эту часть строки для выполнения условных проверок на равенство позже.В этом случае все, что вам действительно нужно, это:
test = filename =~ /-TEST\.ext/
, и при тестировании будет сохранено true
для будущего условного использования.
Здесь необходимо отметить три важные вещи:
Вам необходимо точно настроить регулярное выражение и связанный с ним захват для вашего конкретного случая использования.Сделайте его более жадным или более ограничительным в зависимости от ваших ожидаемых совпадений и проверок.Я работал только с одним приведенным общим примером.
Переменные var
и test
должны быть присвоены null
сразу после вашего последнего использования.Он не является сериализуемым и, следовательно, вызовет ошибку в конвейере Jenkins, если он будет сохраняться после его последнего использования.Например:
var = filename =~ /-([A-Z]+)\.ext/
print "Using ${var} for the first time."
print "Using ${var} for the last time."
var = null
Для декларативных синтаксических конвейеров эти примеры кода должны быть вложены в script {}
блоков.