2016-05-30 115 views
-1

我使用的是正則表達式模式"MilliSeconds\s\&lt;",並嘗試與輸入"MilliSeconds <",但每次我的正則表達式匹配是越來越無法比較。誰能說出這裏有什麼問題?其次反斜線大於和小於C#正則表達式符號

毫秒,&lt;

string value = @"MilliSecs <Test Run"; 
string pattern = @"MilliSecs\s\&lt;"; 

Match mtchObj = Regex.Match(value,pattern); 

if(mtchObj.Success) 
{ 
    MessageBox.Show("Matched"); 
} 

我的哪個輸入字符串是沒有得到與模式匹配?

+2

無需轉義'<': - 'MilliSeconds \ s <' – rock321987

+1

將更多的代碼告訴正在發生的事情和您的期望.. – rock321987

+0

轉義斜線 – karthik

回答

3

注意,正則表達式引擎不知道XML的轉義字符串,並&lt;沒有一個&lt;字符串和<人物站在兩個。換句話說,這些實體對於正則表達式引擎並不相同。

看來你可以修改pattern。請注意,這是可能的,以配合交替的幫助,無論是<&lt;分組

@"MilliSeconds\s(?:&lt;|<)" 
       ^^^^^^^^^^ 

所以,(?:&lt;|<)是嘗試匹配&lt;非捕獲組,如果沒有找到,<被嘗試。

1

使用簡單的string pattern = @"MilliSecs\s<";,在這個正則表達式中沒有必要轉義<,因爲它沒有特殊的含義。你的代碼應該是:

string value = @"MilliSecs <Test Run"; 
string pattern = @"MilliSecs\s<"; 

Match mtchObj = Regex.Match(value,pattern); 

if(mtchObj.Success) 
{ 
    MessageBox.Show("Matched"); 
} 
+0

但我的模式寫着「\ <」不是符號「<」,也無法改變我的輸入文件 – karthik

+2

如果你給我們您的原始數據,所以我們可以嘗試一下呢? @karthik –

+0

我的模式看起來像這樣。我會做初始化和結束字符串比較,如果匹配繼續進行正則表達式比較。會發生什麼是我的字符串比較經過,但我的正則表達式失敗? – karthik