【发布时间】:2019-03-06 17:37:13
【问题描述】:
通常,当我替换换行符时,我会跳转到正则表达式,就像在这个 PHP 中一样
preg_replace('/\R/u', "\n", $String);
因为我知道这是替换任何类型的 Unicode 换行符(无论是 \n、\r、\r\n 等)的一种非常持久的方法
我也在 Go 中尝试过这样的事情,但我明白了
解析正则表达式错误:无效的转义序列:
\R
在这条线上
msg = regexp.MustCompilePOSIX("\\R").ReplaceAllString(html.EscapeString(msg), "<br>\n")
我尝试使用 https://stackoverflow.com/a/4389171/728236 中的 (?:(?>\r\n)|\v),但看起来 Go 的正则表达式实现也不支持,invalid or unsupported Perl syntax: '(?>' 引起恐慌
在 Go、Regex 中替换换行符的好、安全的方法是什么?
我在这里看到这个答案 Golang: Issues replacing newlines in a string from a text file 说要使用 \r?\n,但我不敢相信它会得到 all Unicode 换行符,主要是因为这个问题的答案列出了很多换行代码点比 \r?\n 覆盖的 3 个代码点多,
【问题讨论】:
-
@ttomalak 我看到了,这就是我现在正在使用的,但我不确定这是否像
\R那样包罗万象,特别是因为这个关于剥离的答案所有 Unicode 换行符都包含更多代码点 stackoverflow.com/a/38309489/728236