- 此问题在此处已有答案**:
(13个答案)
3小时前关门了。
我想创建一个python正则表达式,它可以选择一个完整的Terraform资源块。一个文件中有多个资源块(下面的例子),我想分别选择每个资源块。
我试过下面的正则表达式。第一个在代码中有多个右括号时会卡住。第二个只选择整个文件。
1) match = re.search(r'resource.*?\{(.*?)\}', code, re.DOTALL)
2) match = re.search(r'resource.*?\{(.*)\}', code, re.DOTALL)
样本文件:
resource "aws_s3_bucket_notification" "aws-lambda-trigger" {
bucket = aws_s3_bucket.newbucket.id
lambda_function {
lambda_function_arn = aws_lambda_function.test_lambda.arn
events = ["s3:ObjectCreated:*"]
filter_prefix = var.prefix
filter_suffix = var.suffix
}
}
resource "aws_s3_bucket" "newbucket" {
bucket = var.bucket_name
force_destroy = true
acl = var.acl_value
}
1条答案
按热度按时间omhiaaxx1#
一般来说,你不应该使用正则表达式来解析诸如html、xml或者hcl之类的结构,而应该使用像
pyhcl
这样的解析器然后,您可以将其全部解析到一个dict中,只需查找您感兴趣的任何值。
输出