登录
首页 >  Golang >  Go问答

如何找到连续的括号匹配?

来源:stackoverflow

时间:2024-03-11 10:18:25 342浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《如何找到连续的括号匹配?》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

我正在尝试解析 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)
    }
}

如果您想探索/简化/修改表达式,它已经 右上方面板上有解释 regex101.com. 如果您愿意,您 也可以在this link看,怎么搭配 针对一些示例输入。

正则表达式电路

jex.im 可视化正则表达式:

今天关于《如何找到连续的括号匹配?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>