Regex Go正则表达式,带正向查找

Regex Go正则表达式,带正向查找,regex,go,Regex,Go,我正试图在Go中编写一个函数,它将用foobaz替换foobar,但前提是bar前面有foo。在我看来,该函数加上正向查找(cf.)将适用于此,因此我尝试了以下方法: package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`(?<=foo)bar`) new := re.ReplaceAll([]byte("foobar"), []byte("baz"

我正试图在Go中编写一个函数,它将用
foobaz
替换
foobar
,但前提是
bar
前面有
foo
。在我看来,该函数加上正向查找(cf.)将适用于此,因此我尝试了以下方法:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    re := regexp.MustCompile(`(?<=foo)bar`)

    new := re.ReplaceAll([]byte("foobar"), []byte("baz"))

    fmt.Println(string(new))
}
我怎样才能做到这一点

注 我尝试过的一件事是用非捕获组替换正则表达式:

re := regexp.MustCompile(`(?:foo)bar`)

但是,我发现程序随后会根据需要打印
baz
,而不是
foobaz

看起来您的问题只是静态字符串替换。你能简单地完成吗

但如果你真的想回头看:

Go的
regexp
包不支持查找,您可以在此处检查支持的功能:


如果您确实需要查找,您应该尝试第三方模块,例如:

看起来您的问题只是静态字符串替换。你能简单地完成吗

但如果你真的想回头看:

Go的
regexp
包不支持查找,您可以在此处检查支持的功能:


如果您确实需要查找,您应该尝试使用第三方模块,例如:

regex在这里有什么用途?“将
foobar
替换为
foobaz
,但前提是
bar
前面加上
foo
”这一要求相当奇怪,因为
foobar
只是一个静态字符串,并且始终满足该条件。regex在这里有什么用途?“将
foobar
替换为
foobaz
,但前提是
bar
前面加上
foo
”这一要求相当奇怪,因为
foobar
只是一个静态字符串,而且该条件始终会得到满足。
re := regexp.MustCompile(`(?:foo)bar`)