如何在Golang中提取文本中的括号包裹内容
在Golang中提取圆括号包裹的内容
有两种常用方法可以实现这个需求,分别是正则表达式匹配和手动字符串处理,具体如下:
方法一:正则表达式匹配
用Go标准库的regexp包可以快速实现匹配,推荐用非贪婪模式避免匹配多个括号时的错误:
package main import ( "fmt" "regexp" ) func main() { input := "bla bla bla (asd) bla bla bla" // 匹配最短的括号包裹内容,避免贪婪匹配 re := regexp.MustCompile(`\(.*?\)`) // 获取第一个匹配项 match := re.FindString(input) fmt.Println(match) // 输出: (asd) // 如果需要提取所有匹配项,用FindAllString // matches := re.FindAllString(input, -1) // fmt.Println(matches) }
方法二:手动字符串处理
如果不想依赖正则,也可以通过字符串索引定位来提取:
package main import ( "fmt" "strings" ) func extractParentheses(s string) string { // 找左括号位置 leftPos := strings.Index(s, "(") if leftPos == -1 { return "" // 没有左括号返回空 } // 从左括号开始找右括号位置 rightPos := strings.Index(s[leftPos:], ")") if rightPos == -1 { return "" // 只有左括号没有右括号返回空 } // 截取从左括号到右括号(包含)的子串 return s[leftPos : leftPos+rightPos+1] } func main() { input := "bla bla bla (asd) bla bla bla" result := extractParentheses(input) fmt.Println(result) // 输出: (asd) }
内容的提问来源于stack exchange,提问作者Sepehr
相关产品推荐
相关产品推荐

