Regex.Replace不替换整个字符串而是替换字符串中的字符

时间:2014-06-19 18:31:38

标签: c# .net regex string replace

我的代码如下:

ArticleContent = Regex.Replace(_article.Article, "[QUOTE]", "<p class='quote'><span style='font-size:1.8em !important;'>" + _article.NewFields.Quotes + "</span></p>", RegexOptions.IgnoreCase);

我面临的问题是,正则表达式并没有替换整个字符串'[QUOTE]'。相反,它正在搜索字母q,u,o,t,e并用替换字符串替换它们。我知道问题是因为方括号,但我希望它也被替换。请帮忙。

2 个答案:

答案 0 :(得分:0)

使用非捕获组将所有出现的字符串QUOTE替换为所需的字符串,

(?:QUOTE)

所以你的代码应该是,

ArticleContent = Regex.Replace(_article.Article, "(?:QUOTE)", "<p class='quote'><span style='font-size:1.8em !important;'>" + _article.NewFields.Quotes + "</span></p>", RegexOptions.IgnoreCase);

OR

尝试转义方括号,如果你想用其他字符串替换[QUOTE],那么正则表达式中的suare括号具有特殊含义。

\[QUOTE\]

你的代码应该是,

ArticleContent = Regex.Replace(_article.Article, "\[QUOTE\]", "<p class='quote'><span style='font-size:1.8em !important;'>" + _article.NewFields.Quotes + "</span></p>", RegexOptions.IgnoreCase);

答案 1 :(得分:0)

你必须逃避方括号!并且不要忘记REGEXP区分大小写。这是我对您的代码的更正:

ArticleContent = Regex.Replace(_article.Article, "\[quote\]", "<p class='quote'><span style='font-size:1.8em !important;'>" + _article.NewFields.Quotes + "</span></p>", RegexOptions.IgnoreCase);

顺便说一句,我没有看到任何引用&#39;引用&#39;用括号括起来,所以我不确定我得到了你想要做的......

相关问题