web-dev-qa-db-ja.com

Terraformの正規表現

Terraformコードで正規表現を使用する必要があります。 replace関数のドキュメント は、スラッシュで囲まれた文字列が正規表現として処理できることを示しています。

私は以下を試しました:

Name = "${replace(var.string, var.search | lower(var.search), replace)}"

正規表現を使用して、文字列または文字列の小文字を置換文字列に置き換える必要があります。

10
Sam

replace function のTerraformドキュメントでは、正規表現を検索するには検索文字列をスラッシュで囲む必要があると述べており、これは コード

Terraformは re2ライブラリ を使用して正規表現を処理し、/iフラグを使用して大文字と小文字を区別しないと想定されています。ただし、私はそれをまったく機能させることができなかったようです(/search/i/を試しても)。POSIXモードでない限り、 Perlスタイルの正規表現 をサポートしているので、 (?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)}"
  }
}
16
ydaetskcoR

もう1つの例-「string」変数の末尾からピリオドを削除します。

variable "string"  { default = "Foo." }

"${replace("var.string", "\\.$", "")}"
4
Xtigyro

私はそうだと思います:"${replace(var.string, "/\\.$/", "")}"

0
user182159