在 Go 中使用正则表达式查找匹配
使用 Go 时,您可能会遇到需要使用正则表达式来匹配字符串中的特定模式。以下是如何使用 regexp 包来完成此操作:
问题:
如何找到给定字符串中指定正则表达式的所有匹配项并将它们作为数组?
示例:
考虑字符串:“{city},{state} {zip}”。目标是返回一个包含大括号括起来的所有子字符串的数组。
初始尝试:
使用 regexp 包,您可能已经尝试过以下代码:
r := regexp.MustCompile("/({[^}]*})/") matches := r.FindAllString("{city}, {state} {zip}", -1)
但是,此代码返回一个空切片,表明没有匹配项找到。
解决方案:
要解决此问题,请考虑以下步骤:
对于所有匹配:
r := regexp.MustCompile(`{[^{}]*}`) matches := r.FindAllString("{city}, {state} {zip}", -1) fmt.Println(matches) // Prints: [{city}, {state}, {zip}]
对于捕获的零件仅:
r := regexp.MustCompile(`{([^{}]*)}`) matches := r.FindAllStringSubmatch("{city}, {state} {zip}", -1) for _, v := range matches { fmt.Println(v[1]) // Prints: city, state, zip }
以上是如何高效地查找 Go 字符串中的所有正则表达式匹配项?的详细内容。更多信息请关注PHP中文网其他相关文章!