删除Golang中包含某些子字符串的行

Kok*_*zzu 3 go string-parsing

如何删除某些子在启动线[]byte,在Ruby平时我做这样的事情:

lines = lines.split("\n").reject{|r| r.include? 'substring'}.join("\n")
Run Code Online (Sandbox Code Playgroud)

怎么做Go

Von*_*onC 7

您可以使用regexp模拟它:

re := regexp.MustCompile("(?m)[\r\n]+^.*substring.*$")
res := re.ReplaceAllString(s, "")
Run Code Online (Sandbox Code Playgroud)

(OP Kokizzu "(?m)^.*" +substr+ ".*$[\r\n]+")

这个例子

func main() {
    s := `aaaaa
bbbb
cc substring ddd
eeee
ffff`
    re := regexp.MustCompile("(?m)[\r\n]+^.*substring.*$")
    res := re.ReplaceAllString(s, "")
    fmt.Println(res)
}
Run Code Online (Sandbox Code Playgroud)

输出:

aaaaa
bbbb
eeee
ffff
Run Code Online (Sandbox Code Playgroud)

注意使用regexp标志(?m):

多行模式:^$匹配开始/除端线以开始/结束文本(默认为false)