C# 使用特殊字符时分析错误

C# 使用特殊字符时分析错误,c#,regex,parsing,C#,Regex,Parsing,我想在结果集中突出显示我的搜索字符串。当我的搜索字符串为(Java、PHP)时,我的代码运行良好。 然而,当我的搜索字符串是(Java,C++)时,当代码执行这一行时,我会得到解析错误- RegExp = new Regex(Search_String.Replace(" ", "|").Trim(), RegexOptions.IgnoreCase); 我知道正则表达式将+和-视为特殊字符,因此当我的搜索字符串为(C++)时,我使用了一个单独的正则表达式,如下所述- if (Search_S

我想在结果集中突出显示我的搜索字符串。当我的搜索字符串为(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>";
         }
if(搜索字符串包含(“,”))
{
搜索字符串=搜索字符串。替换(“,”,“”);
}
//正则表达式设置并添加Or运算符。
RegExp=new Regex(Search_String.Replace(“,“|”).Trim(),RegexOptions.IgnoreCase);
//通过在每次找到关键字时调用代理来突出显示关键字。
返回RegExp.Replace(textInfo.ToTitleCase(inputxt),新的MatchEvaluator(ReplaceKeyWords));
公共字符串替换关键字(匹配m)
{
返回“+m.值+”;
}

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

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

是您正在查找的内容。当我的搜索字符串(Java.C++),我需要做哪些修改才能通过下面的代码行--//正则表达式设置并添加Or运算符.RegExp=new Regex(Search_String.Replace(“,”).Trim(),RegexOptions.IgnoreCase);这就是您要查找的内容。当我的搜索字符串为(Java.C++)时,我需要做哪些修改才能通过下面的代码行--//正则表达式设置并添加Or运算符。RegExp=new Regex(Search_String.Replace(“,“|”).Trim(),RegexOptions.IgnoreCase);感谢您的响应。我正在尝试实现Regex.Excape(),但是我无法通过解析错误。你能给我举个例子吗?我使用了下面的代码,但它不起作用——返回Regex.Escape(Search\u Str.Replace(“,“|”).Trim(),@“c\++”,“${0}”,RegexOptions.IgnoreCase))@user2619042:
Regex.Escape
对所有特殊字符进行转义,使Regex引擎将其视为纯文本。其中包括
|
字符。您只希望转义要作为文本处理的字符。因此,您希望在插入
|
s之前转义。恐怕我仍然无法获取此信息。设置正则表达式或在return语句中是否需要使用regex.escape()?你能给我举个我能想象的例子吗?如果我的搜索字符串是(Java,C++),我想返回Java | C++,感谢您的回复。我正在尝试实现Regex.Excape(),但是我无法通过解析错误。你能举个例子让我理解吗?我使用了下面的代码,但它不起作用——返回Regex.Escape(Search_Str.Replace(“,“|”).Trim(),@“c\++”,“${0}”,RegexOptions.IgnoreCase))@user2619042:
Regex.Escape
对所有特殊字符进行转义,使Regex引擎将其视为纯文本。其中包括
|
字符。您只希望转义要作为文本处理的字符。因此,您希望在插入
|
s之前转义。恐怕我仍然无法获取此信息。设置正则表达式或在return语句中是否需要使用regex.escape()?你能给我举个我能想象的例子吗?如果我的搜索字符串是(Java,C++),我想返回Java | C++