为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
素胚勾勒不出你 2022-03-02 19:24:25
我正在尝试返回一个数组或切片,其中包含针对字符串的特定正则表达式的所有匹配项。字符串是:{city}, {state} {zip}我想返回一个数组,其中包含大括号之间字符串的所有匹配项。我曾尝试使用regexp包来完成此操作,但无法弄清楚如何返回我正在寻找的内容。这是我当前的代码:r := regexp.MustCompile("/({[^}]*})/") matches := r.FindAllString("{city}, {state} {zip}", -1)但是,无论我尝试什么,它每次返回的都是一个空切片。
查看完整描述

1 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

首先,您不需要正则表达式分隔符。其次,使用原始字符串文字来定义正则表达式模式是一个好主意,您只需使用 1 个反斜杠来转义正则表达式元字符。{第三,仅当您需要获取不带and的值时才需要捕获组},因此,您可以将其删除以获取{city}, {state}and {zip}。


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


r := regexp.MustCompile(`{[^{}]*}`)

matches := r.FindAllString("{city}, {state} {zip}", -1)

请参阅Go 演示。


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


r := regexp.MustCompile(`{([^{}]*)}`)

matches := r.FindAllStringSubmatch("{city}, {state} {zip}", -1)

for _, v := range matches {

    fmt.Println(v[1])

}

请参阅此 Go 演示。


正则表达式详细信息

  • {- 文字{字符

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

  • }- 文字}字符


查看完整回答
反对 回复 2022-03-02
  • 1 回答
  • 0 关注
  • 312 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信