我正在尝试在 Go 中编写一个函数,它将替换foobar
为foobaz
,但前提是bar
前面是foo
。我尝试了以下方法:
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`(?<=foo)bar`)
new := re.ReplaceAll([]byte("foobar"), []byte("baz"))
fmt.Println(string(new))
}
目标是让这个程序 print foobaz,但我却感到恐慌,因为正则表达式无法编译:
panic: regexp: Compile(`(?<=foo)bar`): error parsing regexp: invalid or unsupported Perl syntax: `(?<`
我怎样才能做到这一点?
笔记
我尝试过的一件事是将正则表达式替换为非捕获组:
re := regexp.MustCompile(`(?:foo)bar`)
但是,我发现程序随后打印baz而不是按foobaz预期打印。
蝴蝶刀刀
相关分类