我正在尝试解析Helm模板行。当我在同一行上并排有值声明时,我会遇到问题。
例如,image: "{{ $.Values.image.repository }}:{{ $.Values.image.tag }}"
行返回一个大匹配,而不是方括号中的两个匹配。
我尝试使用(\-)?( )?(.*):( )\{\{( )(\$)?.Values.*\}\}
。
我想同时获得两个值实例而不是一个大型实例。
最佳答案
我猜想也许您可能想编写一个看起来与以下内容类似的表达式:
\s*{{\s*\$?\.Values([^}]*)?\s*}}
测试
package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?m)\s*{{\s*\$?\.Values([^}]*)?\s*}}`)
var str = `image: "{{ $.Values.image.repository }}:{{ $.Values.image.tag }}`
for i, match := range re.FindAllString(str, -1) {
fmt.Println(match, "found at index", i)
}
}
RegEx电路
jex.im可视化正则表达式:
关于regex - 如何匹配彼此相邻的包围支架?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57466482/