在 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]) }
此修改后的方法成功捕获命令及其三个参数并分别打印它们。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3