我需要在Terraform代码中使用正则表达式。 documentation for the replace function表示如果将字符串包装在正斜杠中,则可以将其视为正则表达式。
我尝试了以下方法:
Name = "${replace(var.string, var.search | lower(var.search), replace)}"
我需要使用正则表达式用替换字符串替换字符串或字符串的小写字母。
最佳答案
replace function状态的Terraform文档,您需要将搜索字符串以正斜杠包装起来,以便搜索正则表达式,这也可以在code中看到。
Terraform使用re2 library处理正则表达式,该正则表达式理应带有/i
标志以使其不区分大小写。但是,我似乎根本无法使它工作(甚至尝试/search/i/
),但它确实支持Perl style regular expressions,除非在POSIX模式下,因此只需在搜索变量前加上(?i)
即可。
一个基本的工作示例如下所示:
variable "string" { default = "Foo" }
variable "search" { default = "/(?i)foo/" }
variable "replace" { default = "bar" }
resource "aws_instance" "example" {
ami = "ami-123456"
instance_type = "t2.micro"
tags {
Name = "${replace(var.string, var.search, var.replace)}"
}
}