Golang用空换行分割字符串

时间:2016-04-30 16:42:55

标签: regex go

我有这个JS功能,我正试图转换为Go:

function splitByEmptyNewline(str) {
  return str
    .replace(/\r\n/g, '\n')
    .split(/^\s*\n/gm);
}

这是我到目前为止所得到的:

func splitByEmptyNewline(str string) []string {
    strNormalized := regexp.
        MustCompile("\r\n").
        ReplaceAllString(str, "\n")
    return regexp.
        MustCompile("^s*\n").
        Split(strNormalized, -1)
}

这不会返回与JavaScript版本相同的结果。所以我想知道我错过了什么?

我尝试使用双引号和后向单引号`作为正则表达式。

1 个答案:

答案 0 :(得分:2)

您的分隔符RegEx不匹配,因为您分割了一个完整的字符串,并且该字符串的开头不是空格。因此,您必须使用^\s*\n

而不是\n\s*\n
func splitByEmptyNewline(str string) []string {
    strNormalized := regexp.
        MustCompile("\r\n").
        ReplaceAllString(str, "\n")

    return regexp.
        MustCompile(`\n\s*\n`).
        Split(strNormalized, -1)

}

以下是工作示例:https://play.golang.org/p/be6Mf3-XNP