首页 > 后端开发 > Golang > 如何使用 Go 的 regexp 包提取大括号内的字符串匹配?

如何使用 Go 的 regexp 包提取大括号内的字符串匹配?

Susan Sarandon
发布: 2024-12-18 16:29:10
原创
281 人浏览过

How to Extract String Matches Enclosed in Curly Braces Using Go's `regexp` Package?

在 Go 中使用正则表达式检索字符串匹配

在 Go 中,regexp 包提供了根据正则在字符串中搜索匹配项的功能表达式。本指南说明如何从给定字符串中提取匹配数组,这些字符串包含用大括号括起来的特定段。

问题:

您有一个包含以下内容的字符串模式:

{city}, {state} {zip}
登录后复制

您的目标是获得一个包含大括号之间出现的所有子字符串的数组。尽管使用了 regexp 包,但您在实现所需的输出时遇到了困难。

解决方案:

要解决此问题,请考虑以下步骤:

  1. 消除正则表达式分隔符:删除包裹正则表达式的正斜杠表达式。
  2. 使用原始字符串文字: 使用原始字符串文字定义正则表达式,用反引号 `` 表示,它允许您使用单个反斜杠转义正则表达式元字符。
  3. 删除捕获组:对于本例,捕获组{([^{}]*)} 是不必要的,因为您只需要大括号之间的字符串。因此,您可以使用简化模式 {[^}]*}。

要检索所有匹配项,请使用 FindAllString:

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

仅捕获卷曲之间的部分大括号,使用 FindAllStringSubmatch 以及包含捕获括号的模式:

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

Regex细分:

  • { - 匹配文字左大括号。
  • {[^{}]*} - 捕获除大括号之外的所有字符并将它们存储在group.
  • ([^{}]*) - 与上面类似,但捕获的部分分配给组1.
  • } - 匹配文字右大括号。

以上是如何使用 Go 的 regexp 包提取大括号内的字符串匹配?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板