2 回答
TA贡献2011条经验 获得超2个赞
go的regexp包不支持零宽度环视。您可以利用以下功能利用捕获的分组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
正则表达式\(([^)]+)\):
\(
匹配文字(
([^)]+)
匹配子字符串到下一个并将匹配放在捕获的组中,在这里您也)
可以使用非贪婪匹配.*?\)
\)
匹配文字)
TA贡献1803条经验 获得超6个赞
试试这个:
\((.*?)\)
解释
代码示例:
package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`\((.*?)\)`)
var str = `foo(bar)foo(baz)golang`
mt:= re.FindAllStringSubmatch(str, -1)
for _, i := range mt {
fmt.Println(i[1])
}
}
- 2 回答
- 0 关注
- 336 浏览
添加回答
举报