使用特殊字符时解析错误

时间:2013-07-25 16:42:44

标签: c# regex parsing

我想在结果集中突出显示我的搜索字符串。当我的搜索字符串是(Java,PHP)时,我的代码工作正常。 但是,当我的搜索字符串是(Java,C ++)时,我在代码执行此行时遇到解析错误 -

RegExp = new Regex(Search_String.Replace(" ", "|").Trim(), RegexOptions.IgnoreCase);

我理解正则表达式将+视为特殊字符,因此当我的搜索字符串为(C ++)时 - 我使用了一个单独的正则表达式,如下所述 -

if (Search_String.Contains("++"))
{
    RegExp = new Regex(@"C\+{2}");
}

我现在面临的问题是结合这两个正则表达式,以便我的代码在搜索字符串(Java,C ++)时有效。 任何人都可以建议解决这个解析错误吗?

代码段 -

if (Search_String.Contains(","))
            {
                Search_String = Search_String.Replace(",", " ");
            }
        // Regular expression SetUp and add the Or operator.
        RegExp = new Regex(Search_String.Replace(" ", "|").Trim(), RegexOptions.IgnoreCase);

        // Highlight keywords by calling the delegate each time the keyword is found.
        return RegExp.Replace(textInfo.ToTitleCase(InputTxt), new MatchEvaluator(ReplaceKeyWords));


           public string ReplaceKeyWords(Match m)
         {
             return "<span class=highlight>" + m.Value + "</span>";
         }

1 个答案:

答案 0 :(得分:4)

您正在寻找Regex.Escape(),它将转义输入字符串,以便通过正则表达式引擎将其视为文字文本。