gpt4 book ai didi

regex - 在 Golang 正则表达式中获取括号内的所有子字符串

转载 作者:IT王子 更新时间:2023-10-29 01:54:43 26 4
gpt4 key购买 nike

我想使用正则表达式获取所有括号内的所有子字符串。

以字符串“foo(bar)foo(baz)golang”为例,我想要“bar”和“baz”

在 python 中我可以做到 re.findall("(?<=\()[^)]+(?=\))", "foo(bar)foo(baz)golang")

如何在 go 中实现?

最佳答案

goregexp 包不支持零宽度环视。您可以使用 regexp.FindAllStringSubmatch() 函数利用捕获的分组:

package main

import (
"regexp"
"fmt"
)

func main() {
str := "foo(bar)foo(baz)golang"
rex := regexp.MustCompile(`\(([^)]+)\)`)
out := rex.FindAllStringSubmatch(str, -1)

for _, i := range out {
fmt.Println(i[1])
}
}

输出:

bar
baz

正则表达式\(([^)]+)\):

  • \( 匹配文字 (

  • ([^)]+) 匹配到下一个 ) 的子串,并将匹配放在捕获组中,这里可以使用非贪婪匹配 .*?\) 也是

  • \) 匹配文字 )


Go playground demo

关于regex - 在 Golang 正则表达式中获取括号内的所有子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40586313/

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