使用正向回顾的正则表达式

我正在尝试在 Go 中编写一个函数,它将替换foobarfoobaz,但前提是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预期打印。


临摹微笑
浏览 187回答 1
1回答

蝴蝶刀刀

看起来你的问题只是静态字符串替换。可以简单地用字符串完成。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go