You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用regexReplaceAll替换所有特殊字符且保留换行符?

Go模板中用regexReplaceAll替换特殊字符时保留换行符

你遇到的问题是\\W+正则会把换行符也当成“非单词字符”替换掉,连带着冒号也被替换,才导致两行内容连在一起变成一串。

解决办法很简单,调整正则表达式,把你想保留的字符排除在外就行:

方案1:精准替换指定特殊字符(匹配/和.)

如果你只需要替换/和.这两个字符,直接用精准匹配的正则:

{{- define "testfunc.someYaml" -}}
my/lable.one: sdfsdfsdfdsf
my/lable.two: sdfsdfsdfdsf
{{- end -}}

{{- define "testfunc.replaceSpecialChars" -}}
{{- regexReplaceAll "[/.]+" (include "testfunc.someYaml" .) "_" -}}
{{- end -}}

这个模板返回的结果和你原来多次用replace的效果完全一致:

my_lable_one: sdfsdfsdfdsf
my_lable_two: sdfsdfsdfdsf

方案2:保留指定字符,替换其他所有特殊字符

如果你想替换除了字母、数字、下划线、冒号、换行符之外的所有特殊字符,用取反正则:

{{- define "testfunc.replaceSpecialChars" -}}
{{- regexReplaceAll "[^\\w:\\n]+" (include "testfunc.someYaml" .) "_" -}}
{{- end -}}

这个正则里[^...]表示“匹配不在括号内的所有字符”,\w匹配字母/数字/下划线,:是你要保留的冒号,\n是换行符,所以只会替换这些字符之外的内容,同样能保留换行和冒号格式。

内容的提问来源于stack exchange,提问作者red888

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 13:31:00