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

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

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

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

怎么做呢?

回答:

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


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

  • \( 匹配文字 (

  • ([^)]+)匹配串高达旁边),并把比赛以捕获组,在这里你可以使用非greeedy比赛.*?\)

  • \) 匹配文字 )


去游乐场演示

以上是 获取Golang正则表达式中括号内的所有子字符串 的全部内容, 来源链接: utcz.com/qa/435390.html

回到顶部