Go:regexp匹配一个模式,然后匹配另一个模式

xqkwcwgp  于 2022-11-18  发布在  Go
关注(0)|答案(1)|浏览(172)

我有以下Golang代码:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    // dummy text data
    blob := `
    #s-kiwi
    foo
    #e-kiwi
    #s-banana
        bar
    #e-banana
    #s-mango
    baz
    #e-mango
    `

    // try to match two lines
    fruit := "banana"
    result, _ := regexp.MatchString("#[se]-"+fruit, blob)
    fmt.Println(result)
}

GoPlayground链接:https://go.dev/play/p/p9Q4HYijx9m
我试图通过AND属性的使用来实现完全匹配。我想搜索模式#s-banana AND #e-banana,以确保blob文本具有其封闭参数和启动器参数。
我尝试使用regexp.MatchString("#[se]-"+fruit, blob),但"#[se]-"只匹配字符se
这可以在一行中实现吗?我应该添加一个新的正则表达式条件吗?如果是这样的话,这似乎不是很完美。
我想要的结果是:
尝试使用AND条件在golang上使用regexp在文本中搜索两个字符串。
多谢了。

piv4azn7

piv4azn71#

我们并不完全清楚您要做什么。但是假设您要确认多行文本包含一对以#s-banana开头并以#e-banana结尾的标记,您可以搜索这对标记,其间可以包含任意数量的字符:

result, _ := regexp.MatchString("(?s)#s-"+fruit+".*?#e-"+fruit, blob)

初始的(?s)也允许.匹配换行符,.*?匹配最短的零个或多个字符序列(包括换行符)。

相关问题