Regex.Replace在替换中使用匹配的字符串

时间:2013-06-14 22:22:48

标签: c# regex

我想在C#中使用正则表达式的字符串中的每个换行符之前紧凑地插入<br />标记。可以这样做吗?目前,我只能使用以下内容替换换行符:

myString = Regex.Replace(myString, @"\r\n?|\n", "<br />");

我可以修改此内容以在替换中包含匹配的文本(即\r\n\r\n)吗?

显然,可以使用单独的Match变量来完成,但我很好奇是否可以在一行中完成。

3 个答案:

答案 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 />");