在re2正则表达式中对地形进行多重匹配



我正在尝试在terraform中应用正则表达式。

variable "version" {
type        = "string"
default     = https://s3-us-east-1.amazonaws.com/bucket/folder/item-v1.2/item-item2-v1.2.gz
description = "version"
}
name = "${replace(var.version, "//", "")}"

我只需要替换所有内容,只输出"v1.2"的名称,特别是从item-v1.2文件路径。我在考虑做一些类似

的事情。
name = "${replace(var.version, "//", "")}"

我替换了除v1.2之外的所有内容。

你知道怎么做吗?提前感谢!

您的变量定义有几个问题(例如错误使用引号,变量名称"版本"由于其在模块块中的特殊含义而保留,等等),因此我对以下内容进行操作:

variable "my_version" {
type        = string
default     = "https://s3-us-east-1.amazonaws.com/bucket/folder/item-v1.2/item-item2-v1.2.gz"
description = "version"
}

然后你可以像这样从子文件夹路径中提取版本(或者替换除了所要求的版本之外的所有其他内容)(这已经在terraform console中运行和测试过):

$ terraform console
> var.my_version
"https://s3-us-east-1.amazonaws.com/bucket/folder/item-v1.2/item-item2-v1.2.gz"
> regex(".*-(.*)/.*.gz", var.my_version)[0]
"v1.2"
> replace(var.my_version, "/.*-(.*)/.*.gz/", "<before> $1 <after>")
"<before> v1.2 <after>"

最新更新