插件窝 干货文章 Go语言正则表达式:如何提取括号中的内容?

Go语言正则表达式:如何提取括号中的内容?

Go语言 正则表达式 提取括号内容 Go regexp 括号匹配    来源:    2025-08-31

Go语言正则表达式:如何提取括号中的内容?

在Go语言编程中,正则表达式是处理字符串匹配和提取的强大工具。本文将详细介绍如何使用Go语言的正则表达式库regexp来提取括号中的内容,包括小括号()、中括号[]和大括号{}。通过实际代码示例,帮助您快速掌握这一实用技巧。

1. 正则表达式基础

Go语言内置了regexp包,支持Perl风格的正则表达式。要提取括号中的内容,需使用捕获组(capturing group)。例如,正则表达式\((.*?)\)可以匹配小括号内的任意内容(非贪婪模式)。

2. 提取小括号内容示例

以下代码演示如何提取字符串中的小括号内容:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    str := "Hello (World), this is (Go) regex example."
    re := regexp.MustCompile(`\((.*?)\)`)
    matches := re.FindAllStringSubmatch(str, -1)
    
    for _, match := range matches {
        fmt.Println(match[1]) // 输出捕获组内容
    }
}
// 输出: World
//        Go

3. 处理嵌套括号

若需处理嵌套括号(如(a(b)c)),正则表达式可能无法完美解决,建议使用解析器或递归匹配。但对于简单场景,可通过调整模式处理,例如使用\(([^()]*)\)匹配最内层括号。

4. 提取其他括号类型

类似地,提取中括号或大括号内容只需修改正则模式:

  • 中括号:\[(.*?)\]
  • 大括号:\{(.*?)\}

5. 注意事项

  • 使用FindAllStringSubmatch获取所有匹配的捕获组。
  • 非贪婪模式.*?避免匹配过多内容。
  • 处理特殊字符时需转义,如\(表示字面括号。

通过以上方法,您可以高效地在Go语言中利用正则表达式提取括号内容,提升字符串处理能力。