正则表达式嵌套量词+

时间:2012-03-18 16:45:26

标签: c# regex

我正在尝试将c++替换为以下字符串中的<b>c++</b>

"Select the projects entry and then select VC++ directories. Select show"

我希望它是

"Select the projects entry and then select V<b>C++</b> directories. Select show"

我正在使用此代码:

string cssOld = Regex.Replace(
   "Select the projects entry and then select VC++ directories. Select show",
   "c++", "<b>${0}</b>", RegexOptions.IgnoreCase);

我收到以下错误:
System.ArgumentException: parsing "c++" - Nested quantifier +.

此代码适用于其他文本(!c ++)。似乎+运算符会导致Regex库抛出异常。

2 个答案:

答案 0 :(得分:4)

+是正则表达式中的特殊字符;它的意思是“匹配前面一个或多个字符”。

要匹配文字+字符,您需要通过编写\+(在@""字面内)来逃避它

要匹配任意文字字符,请使用Regex.Escape

答案 1 :(得分:2)

您应该转义regex中的特殊字符:

string cssOld = Regex.Replace(
    "Select the projects entry and then select VC++ directories. Select show ",
    @"c\+\+", "${0}", RegexOptions.IgnoreCase);