我想<br />
在 C# 中使用正则表达式的字符串中的每个换行符之前紧凑地插入一个标签。这可以做到吗?目前,我只能用以下内容替换换行符:
myString = Regex.Replace(myString, @"\r\n?|\n", "<br />");
我可以修改它以在替换中包含匹配的文本(即 、 或 )\r\n
吗\r
?\n
显然,可以使用单独的 Match 变量来完成,但我很好奇它是否可以在一行中完成。
使用括号捕获换行符,并使用$1
您在替换中捕获的内容:
myString = Regex.Replace(myString, @"(\r\n?|\n)", "<br />$1");
MSDN 有一个单独的页面,专门用于.NET 的正则表达式替换魔法。
虽然其他人是正确的,但最通用的方法是捕获某些内容并使用$n
(n
捕获的组号在哪里)写回捕获的内容,但在您的情况下,您可以简单地写回整个匹配项$&
:
myString = Regex.Replace(myString, @"\r\n?|\n", "<br />$&");
如果您经常这样做,那么避免捕获可能会更有效。
您可以在“替换”字符串中进行替换:
Regex.Replace(myString, @"(\r\n?|\n)", "$1<br />");