gpt4 book ai didi

regex - 查找与正则表达式golang匹配的所有字符串

转载 作者:行者123 更新时间:2023-12-01 22:28:28 25 4
gpt4 key购买 nike

我试图返回一个数组,或 slice ,针对字符串针对特定正则表达式的所有匹配项。字符串是:

{city}, {state} {zip}

我想返回一个包含花括号之间所有字符串匹配项的数组。我尝试使用 regexp包来完成此操作,但无法弄清楚如何返回我要查找的内容。这是我当前的代码:
r := regexp.MustCompile("/({[^}]*})/")
matches := r.FindAllString("{city}, {state} {zip}", -1)

但是,无论我尝试什么,每次返回的结果都是一片空白。

最佳答案

首先,您不需要正则表达式定界符。其次,使用原始字符串文字定义一个正则表达式模式是个好主意,在该模式中,您仅需使用1个反斜杠即可转义正则表达式元字符。第三,仅当需要获取不含{}的值时,捕获组才是必需的,因此,可以将其删除以获取{city}{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

正则表达式详细信息
  • {-文字{ char
  • ([^{}]*)-一个匹配组,它与*{之外的任何0个或多个(由于}限定符)字符匹配([^...]是一个与任何字符匹配的否定字符类,但在[^]之间指定的一个或多个字符)
  • }-文字} char
  • 关于regex - 查找与正则表达式golang匹配的所有字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58323557/

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