Helm - 用下划线替换特殊字符

7

初学k8s和helm。

尝试使用{{ .Release.Name }}在部署中声明一个字段,该字段不得包含除字母(大写+小写)、数字和下划线以外的字符。

应将被排除的字符替换为_,例如:feature/my-feature-1130

应替换为:feature_my_feature_1130

请帮助我创建这样一个字段,非常感谢!


1
尝试使用 {{ regexReplaceAll "\\W+" .Release.Name "_" }} - Wiktor Stribiżew
1
@WiktorStribiżew 看起来解决了问题。谢谢! - NI6
1个回答

15
您可以像这样使用regexReplaceAll来替换文本中的内容:
{{ regexReplaceAll "\\W+" .Release.Name "_" }}

请参见正则表达式演示

\W+匹配一个或多个任何非单词字符(除字母、数字和_之外的字符),并用_替换它们。

由于\用于形成字符串转义序列,所以需要另一个转义符号来形成正则表达式转义

注意函数参数的顺序,模式首先出现,然后是输入字符串,然后是替换模式。


你能用regexReplaceAll解决它吗?我正在尝试做类似的事情,但只想替换第一次出现的,但我无法做到。例如:feature-my-feature-1130应该被替换为:feature/my_feature_1130如果有人能分享一些技巧就好了。 - Little crazy
1
@Littlecrazy 如果你的意思是需要将第一个“-”替换为“/”,那么你可以使用{{ regexReplaceAll "^([^-]*)-" .Release.Name "${1}/" }} - Wiktor Stribiżew
谢谢分享。它有效,${1}是什么意思? - Little crazy
@Littlecrazy ${1} 是一个替换后向引用。它指的是第一个捕获组所捕获到的文本。 - Wiktor Stribiżew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接