微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

替代消极展望

如何解决替代消极展望

我正在编写一个 terraform 模块,我需要在其中捕获和替换字符串中的标记标记{{...}} 括起来,但我不想捕获那些匹配 {{global-...}}标记

例如:

locals {
    input = "Hello {{name}} this is {{global-env}}. Welcome to {{home}}."
    output = replace(local.input,"/{{(.+?)}}/","{{$1-en_US}}")
}

output "output" { value = local.output }
# Actual:   Hello {{name-en_US}} this is {{global-env-en_US}}. Welcome to {{home-en_US}}
# Expected: Hello {{name-en_US}} this is {{global-env}}. Welcome to {{home-en_US}}

在 C# 正则表达式中,我本可以使用负面展望:

{{(?!global-)(.+?)}}

然而,由于 terraform 及其底层 Go lang 运行时不支持环视,有什么替代方案?位于 terraform 模块中也不允许我遍历每个匹配项并测试捕获组。

解决方法

您可以通过使用第二个替换从第一个替换后以 -en_US 开头并以 global- 结尾的占位符中删除 -en_US 来解决这个问题:

output = replace(replace(local.input,"/{{(.+?)}}/","{{$1-en_US}}"),"({{global-.+?)-en_US}}","$1}}")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。