小编min*_*ner的帖子

如何使用正则表达式捕获“多个”重复组

我想解析以下文本文件以获取各个字段:

host_group_web = ( )
host_group_lbnorth = ( lba050 lbhou002 lblon003 )
Run Code Online (Sandbox Code Playgroud)

我要提取的字段以粗体显示

  • host_group_ web =()
  • host_group_ lbnorth =(lba505 lbhou002 lblon003

host_group_web在()之间没有任何项目,因此该部分将被忽略

我将第一个组命名为节点组,将()之间的项目命名为节点

我正在逐行读取文件,并存储结果以进行进一步处理。

在Golang中,这是我正在使用的Regex的代码段:

hostGroupLine := "host_group_lbnorth = ( lba050 lbhou002 lblon003 )"
hostGroupExp := regexp.MustCompile(`host_group_(?P<nodegroup>[[:alnum:]]+)\s*=\s*\(\s*(?P<nodes>[[:alnum:]]+\s*)`)
hostGroupMatch := hostGroupExp.FindStringSubmatch(hostGroupLine)

for i, name := range hostGroupExp.SubexpNames() {
  if i != 0 {
    fmt.Println("GroupName:", name, "GroupMatch:", hostGroupMatch[i])
  }
}
Run Code Online (Sandbox Code Playgroud)

我得到以下输出,该输出缺少名为group 的节点的其余匹配项。

GroupName: nodegroup GroupMatch: lbnorth
GroupName: nodes GroupMatch: lba050
Run Code Online (Sandbox Code Playgroud)

高朗游乐场的片段

我的问题是,我如何在Golang中获得一个正则表达式,该正则表达式将与该节点组 …

regex go capture-group

4
推荐指数
1
解决办法
3611
查看次数

标签 统计

capture-group ×1

go ×1

regex ×1