如标题所述,我有一个 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”开头并以“);”结尾的模式的出现。我需要帮助来弄清楚这个的正则表达式是什么样的。
如果需要任何其他信息或上下文,请告诉我。
正则表达式是:
(?s)PATTERN BEGINS HERE.*?\);
其中
(?s)
是让 .*
匹配多行的标志(请参阅 另请参阅演示此处。
不是正则表达式,但可以工作
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
}
编辑:最好将单个字符作为字节处理并返回字节数组