使用正向查找的正则表达式

问题描述 投票:0回答:1

我正在尝试用Go编写一个将foobar替换为foobaz的函数,但前提是bar之前是foo。在我看来,regexp.ReplaceAll函数和正向后看(参见regexp.ReplaceAll)将对此起作用,因此我尝试了以下操作:

https://www.regular-expressions.info/lookaround.html

目标是使该程序打印为package main import ( "fmt" "regexp" ) func main() { re := regexp.MustCompile(`(?<=foo)bar`) new := re.ReplaceAll([]byte("foobar"), []byte("baz")) fmt.Println(string(new)) } ,但由于正则表达式无法编译,我感到恐慌:

foobaz

我该如何进行这项工作?

注意

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

panic: regexp: Compile(`(?<=foo)bar`): error parsing regexp: invalid or unsupported Perl syntax: `(?<`

但是,我发现程序然后根据需要打印了re := regexp.MustCompile(`(?:foo)bar`) 而不是baz

regex go
1个回答
0
投票

看起来您的问题只是静态字符串替换。可以简单地通过foobaz

但是如果您想向后看:

Go的strings.Replace程序包不支持向后看,您可以在此处检查支持的功能:regexp

如果您确实需要向后看,则应尝试使用第三方模块,例如:https://github.com/google/re2/wiki/Syntax

© www.soinside.com 2019 - 2024. All rights reserved.