当前位置:   article > 正文

blackfriday markdown的自动换行 go lang 正则替换字符串时遇到的坑,转义解析其中的 $1 $name 等_golang blackfriday

golang blackfriday

在 使用go langblackfridaymarkdown 解释器时遇到换行问题,在他的配置里面没有回车自动换行这个配置(还是我没找到?),所以自己做了一个
风.foxwho
以下是错误的,改正的在最后

/**
    Markdown自动换行
 */
func MarkdownAutoNewline(str string) string {
    re, _ := regexp.Compile("\\ *\\n")
    str = re.ReplaceAllString(str, "  \n")
    //m.Content=strings.Replace(m.Content, "\n", "  \n", -1)
    reg := regexp.MustCompile("```([\\s\\S]*)```")
    //返回str中第一个匹配reg的字符串
    data := reg.Find([]byte(str))
    strs := strings.Replace(string(data), "  \n", "\n", -1)
    re, _ = regexp.Compile("```([\\s\\S]*)```")
    return re.ReplaceAllString(str, strs)
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

在go lang中,正则替换 函数名中不带Literal的字符时,默认转义/解析其中的 $1 $name 等,
所以这里的正则替换要使用ReplaceAllLiteralString 这个函数

改正后的

/**
    Markdown自动换行
 */
func MarkdownAutoNewline(str string) string {
    re, _ := regexp.Compile("\\ *\\n")
    str = re.ReplaceAllLiteralString(str, "  \n")
    //m.Content=strings.Replace(m.Content, "\n", "  \n", -1)
    reg := regexp.MustCompile("```([\\s\\S]*)```")
    //返回str中第一个匹配reg的字符串
    data := reg.Find([]byte(str))
    strs := strings.Replace(string(data), "  \n", "\n", -1)
    re, _ = regexp.Compile("```([\\s\\S]*)```")
    return re.ReplaceAllLiteralString(str, strs)
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/207681
推荐阅读
相关标签
  

闽ICP备14008679号