我想在结果集中突出显示我的搜索字符串。当我的搜索字符串是(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>";
}
答案 0 :(得分:4)
您正在寻找Regex.Escape()
,它将转义输入字符串,以便通过正则表达式引擎将其视为文字文本。