Golang Regex在两个分隔符之间提取文本 - 包括分隔符

时间:2017-05-21 21:49:09

标签: regex string go

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

const store = createStore(reducer);

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

如果需要任何其他信息或背景,请告诉我。

2 个答案:

答案 0 :(得分:2)

不是正则表达式,但有效

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
}

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

答案 1 :(得分:1)

正则表达式是:

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

其中(?s)是让.*匹配多行的标志(请参阅Go regex syntax)。

请参阅demo