gpt4 book ai didi

regex - 使用 Regex golang 查找所有字符串匹配项

转载 作者:数据小太阳 更新时间:2023-10-29 03:19:57 25 4
gpt4 key购买 nike

我正在尝试返回一个数组或 slice ,其中包含特定正则表达式与字符串的所有匹配项。字符串是:

{city}, {state} {zip}

我想返回一个数组,其中包含大括号之间的所有字符串匹配项。我试过使用 regexp包来完成这个但无法弄清楚如何返回我正在寻找的东西。这是我当前的代码:

r := regexp.MustCompile("/({[^}]*})/")
matches := r.FindAllString("{city}, {state} {zip}", -1)

但是,无论我尝试什么,它每次都返回一个空 slice 。

最佳答案

首先,您不需要正则表达式分隔符。其次,最好使用原始字符串文字来定义正则表达式模式,您只需使用 1 个反斜杠来转义正则表达式元字符。第三,只有当你需要获取没有{}的值时才需要捕获组,因此,你可以删除它以获取{city} code>、{state}{zip}

您可以使用 FindAllString获取所有匹配项:

r := regexp.MustCompile(`{[^{}]*}`)
matches := r.FindAllString("{city}, {state} {zip}", -1)

参见 Go demo .

要仅获取大括号之间的部分,请使用 FindAllStringSubmatch使用包含捕获括号的模式,{([^{}]*)}:

r := regexp.MustCompile(`{([^{}]*)}`)
matches := r.FindAllStringSubmatch("{city}, {state} {zip}", -1)
for _, v := range matches {
fmt.Println(v[1])
}

参见 this Go demo .

正则表达式详细信息

  • { - 文字 { 字符
  • ([^{}]*) - 匹配任何 0 个或多个(由于 * 量词){< 以外的字符的捕获组}([^...] 是一个否定字符类,匹配任何字符,但 [^ 之间指定的字符除外> 和 ])
  • } - 文字 } 字符

关于regex - 使用 Regex golang 查找所有字符串匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55559840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com