我想在C#中使用正则表达式的字符串中的每个换行符之前紧凑地插入<br />
标记。可以这样做吗?目前,我只能使用以下内容替换换行符:
myString = Regex.Replace(myString, @"\r\n?|\n", "<br />");
我可以修改此内容以在替换中包含匹配的文本(即\r\n
,\r
或\n
)吗?
显然,可以使用单独的Match变量来完成,但我很好奇是否可以在一行中完成。
答案 0 :(得分:4)
使用括号捕获换行符,并使用$1
来使用您在替换中捕获的内容:
myString = Regex.Replace(myString, @"(\r\n?|\n)", "<br />$1");
答案 1 :(得分:2)
MSDN有一个单独的页面,仅适用于.NET's regex substitution magic。
虽然其他方面都是正确的,但最常用的方法是捕获内容并使用$n
(其中n
是捕获的组号)回写捕获的内容,在您的情况下,您可以简单地写用$&
支持整场比赛:
myString = Regex.Replace(myString, @"\r\n?|\n", "<br />$&");
如果你这么做很多,那么避免捕捉可能会更有效率。
答案 2 :(得分:1)
您可以在“替换”字符串中使用substitution执行此操作:
Regex.Replace(myString, @"(\r\n?|\n)", "$1<br />");