首页  >  文章  >  后端开发  >  如何在 Go 正则表达式中捕获重复组?

如何在 Go 正则表达式中捕获重复组?

Susan Sarandon
Susan Sarandon原创
2024-10-26 08:36:30206浏览

How to Capture Repeating Groups in Go Regular Expressions?

在 GO 中捕获重复组

尝试解析遵循特定格式的字符串时,例如大写单词后跟零个或多个双精度数- 带引号的参数,有必要定义一个捕获所需元素的正则表达式。在提供的场景中,尝试使用以下正则表达式捕获重复参数:

re1, _ := regexp.Compile(`([A-Z]+)(?: "([^"]+)")*`)

无法正确捕获所有参数。为了解决这个问题,建议修改正则表达式:

re1, _ := regexp.Compile(`([A-Z]+)|(?: "([^"]+)")`)

这个修改后的正则表达式匹配大写单词或双引号字符串,而不捕获周围的引号。这种方法可以更好地捕获重复参数,如以下代码片段所示:

results := re1.FindAllStringSubmatch(`COMMAND "arg1" "arg2" "arg3"`, -1)

fmt.Println("Command:", results[0][1])
for _, arg := range results[1:] {
    fmt.Println("Arg:", arg[2])
}

此修改后的方法成功捕获命令及其三个参数并单独打印它们。

以上是如何在 Go 正则表达式中捕获重复组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn