2013-07-25 46 views
1

我想在結果集中突出顯示我的搜索字符串。當我的搜索字符串是(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++)。 任何人都可以提出解決此解析錯誤?

代碼Snippet-

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

[Regex.Escape](http://msdn.microsoft.com/zh-cn/library/system.text.regularexpressions.regex.escape.aspx)是您正在尋找的。 –

+0

當我的搜索字符串是(Java.C++)時,我需要做些什麼修改才能通過下面的代碼行 - //正則表達式SetUp並添加Or運算符。 RegExp = new Regex(Search_String.Replace(「」,「|」)。Trim(),RegexOptions.IgnoreCase); – Sammy

回答

4

您正在尋找Regex.Escape(),所以它是作爲一個正則表達式引擎文字文本處理,將逃跑的輸入字符串。

+0

感謝您的回覆。我想實現Regex.Excape(),但是我無法通過解析錯誤。你能請網站爲我的理解一個例子嗎? – Sammy

+0

@ user2619042:你寫了什麼代碼? – SLaks

+0

我使用了下面這段代碼,但它不起作用 - 返回Regex.Escape(Search_Str.Replace(「」,「|」)。Trim()),@「c \ + \ +」,「$ {0 }「,RegexOptions.IgnoreCase)); – Sammy