正则表达式.替换不是替换整个字符串,而是替换字符串中的字符

本文关键字:替换 字符串 字符 正则表达式 | 更新日期: 2023-09-27 18:09:18

代码如下:

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,并用替换字符串替换它们。我知道这个问题是因为方括号,但我希望它也被取代。请帮助。

正则表达式.替换不是替换整个字符串,而是替换字符串中的字符

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

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

顺便说一下,我没有看到任何引号'quote',所以我不确定我明白你想要做什么…

使用非捕获组将字符串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);

如果您想用其他字符串替换[QUOTE],请尝试转义方括号,因为方括号在regex中具有特殊含义。

'[QUOTE']

你的代码应该是

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