Golang 正则表达式提取 2 个分隔符之间的文本 - 包括分隔符

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

如标题所述,我有一个 golang 程序,其中有一个具有重复出现模式的字符串。我有这个模式的开始和结束分隔符,我想从字符串中提取它们。以下是伪代码:

string := "... This is preceding text
PATTERN BEGINS HERE (
pattern can continue for any number of lines...
);
this is trailing text that is not part of the pattern"

简而言之,我试图从上面的示例中提取所有以“PATTERN BEGINS HERE”开头并以“);”结尾的模式的出现。我需要帮助来弄清楚这个的正则表达式是什么样的。

如果需要任何其他信息或上下文,请告诉我。

regex string go
2个回答
5
投票

正则表达式是:

(?s)PATTERN BEGINS HERE.*?\);

其中

(?s)
是让
.*
匹配多行的标志(请参阅 Go 正则表达式语法 – 编辑:URL 现在已损坏,这里 存档版本)。

另请参阅演示此处


3
投票

不是正则表达式,但可以工作

func findInString(str, start, end string) ([]byte, error) {
    var match []byte
    index := strings.Index(str, start)

    if index == -1 {
        return match, errors.New("Not found")
    }

    index += len(start)

    for {
        char := str[index]

        if strings.HasPrefix(str[index:index+len(match)], end) {
            break
        }

        match = append(match, char)
        index++
    }

    return match, nil
}

编辑:最好将单个字符作为字节处理并返回字节数组

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