helm - заменить специальные символы на подчеркивание

Впервые в k8s & helm.

Попытка объявить поле в развертывании с использованием {{ .Release.Name }}, которое не должно содержать символов, кроме букв (верхний + нижний), цифр и _.

Исключенные символы следует заменить на _, например: feature/my-feature-1130

следует заменить на: feature_my_feature_1130

Не могли бы вы помочь мне создать такое поле?

Спасибо заранее!


person NI6    schedule 26.04.2020    source источник
comment
Попробуйте {{ regexReplaceAll "\\W+" .Release.Name "_" }}   -  person Wiktor Stribiżew    schedule 26.04.2020
comment
@ WiktorStribiżew Кажется, свое дело. Спасибо!   -  person NI6    schedule 26.04.2020


Ответы (2)


Вы можете использовать regexReplaceAll следующим образом:

{{ regexReplaceAll "\\W+" .Release.Name "_" }}

См. демонстрацию регулярных выражений.

\W+ соответствует одному или нескольким вхождениям любого символа, не являющегося словом (символ, отличный от буквы, цифры и _), и заменяет их на _.

Символ экранирования \ требует другого экранирования для формирования escape-последовательности регулярного выражения, поскольку он используется для формирования управляющих последовательностей строк.

Обратите внимание на порядок аргументов функции: сначала идет шаблон, затем входная строка, а затем шаблон замены.

person Wiktor Stribiżew    schedule 26.04.2020

Вы ищете это

 String s = "feature/my-feature-1130";
          s = s.replaceAll("\\W","_");
          System.out.println(s);

output feature_my_feature_1130 извините, я не знаю, какой язык программирования вы используете, это регулярное выражение работает на java, но вы можете попробовать, работает ли оно для вас

person Abhinav Chauhan    schedule 26.04.2020
comment
Это не вопрос, связанный с Java, он помечен тегом [kubernetes-helm] - Helm - это инструмент для управления пакетами предварительно настроенных ресурсов Kubernetes (диаграммы). - person Wiktor Stribiżew; 26.04.2020
comment
я не знаю, что kubernetes он приводит пример в строках 6 и 8, я просто предоставил что-то для этого, оказывается, я ошибся - person Abhinav Chauhan; 26.04.2020
comment
Да, код Java просто не будет работать в шаблонных функциях Sprig. - person Wiktor Stribiżew; 26.04.2020