如何用一个<BR>替换多个换行符?

mrb*_*lah 7 c# regex editor

我正在用标签替换所有出现\n的内容<BR>,但由于某种原因,输入的文本连续多个\n,所以我需要将它们组合起来.

基本上,如果一起出现超过1 \n,则只用一个<BR>标签替换它.

有人可以帮我弄这个吗?

Luk*_*keH 23

这将用一个替换任何car-returns(\r)和/或换行符(\n)序列<br />:

string formatted = Regex.Replace(original, @"[\r\n]+", "<br />");
Run Code Online (Sandbox Code Playgroud)

如果您只想替换两个或更多项的序列,那么简单的答案是使用{2,}量词(意思是"至少两次重复")而不是+(这意味着"至少一次重复"):

string formatted = Regex.Replace(original, @"[\r\n]{2,}", "<br />");
Run Code Online (Sandbox Code Playgroud)

请注意,上面的表达式会将常见的CR + LF组合视为两个项目的序列.您可能希望将CR + LF视为单个项目,在这种情况下,表达式会变得稍微复杂一些:

string formatted = Regex.Replace(original, @"(?:\r\n|\r(?!\n)|(?<!\r)\n){2,}", "<br />");
Run Code Online (Sandbox Code Playgroud)

  • @smallatom:你发现了一个已经存在五年多的拼写错误!它是[负向后查找](http://www.regular-expressions.info/lookaround.html)断言的一部分,但它应该读为“?&lt;!”而不是“?!&lt;”。我刚刚进行了编辑以修复它。 (2认同)