【发布时间】:2021-01-16 00:25:58
【问题描述】:
我正在尝试解析一些变量定义以自动提取文档,但我无法跳过一些可能出现在默认值中的}。
这是一个示例...
variable "a" {
type = string
description = "A desc"
default = ""
}
variable "b" {
type = map()
description = "B desc"
default = {}
}
variable "c" {
type = list(string)
description = "C desc"
default = []
}
我正在使用的正则表达式
variable.\"(?<name>\w+)\"(.*?)description.=."(?<desc>[^"\\]*(?:\\.[^"\\]*)*)"(.*?)}
替换为
'* `${name}`: ${desc}
这给出了输出
* `a`: A desc
* `b`: B desc
}
* `c`: C Desc
我需要正则表达式处于单行模式和非贪婪模式,因此它保留在每个变量定义中,但是我似乎无法阻止它在它找到的第一个尾随 } 上匹配。如果可以匹配 ^} 会更好 - 但我们再次处于单行模式,因此不适用。
【问题讨论】:
-
尝试用前瞻
(?=variable|$)而不是}结束它,这样它将在下一个“变量”或文件结尾之前停止。虽然您需要在替换中添加空白行。