我正在尝试解析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 - 如何匹配彼此相邻的包围支架?-LMLPHP

关于regex - 如何匹配彼此相邻的包围支架?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57466482/

10-16 19:22