2013-09-29 38 views
-1

我在使用正則表達式時遇到問題。正則表達式與預期的不匹配

我有以下代碼:

string d = "moveUp(),;moveDown();"; 
string[] s = Regex.Split(d, ","); 
foreach (string line in s) 
{ 
    string line1 = line.Replace("\n", null); 
    line1 = line1.Replace("\r", null); 
    string pattern = @"^moveUp();$"; 
    bool a1 = Regex.IsMatch(line1, pattern); 
    if (!a1) 
    { 
     warning.Text = "error"; 
     return; 
    } 
} 

爲什麼是a1false這裏的價值?

+0

一個普通的舊字符串比較比正則表達式要簡單得多:'!line1.Equals(「moveUp();」)'你顯然不需要通配符,沒有組,沒有捕獲......爲什麼*你使用正則表達式? – stakx

回答

3

()在正則表達式中具有特殊含義:捕獲組。

你必須逃避它:\(\)字面上匹配()

+0

非常感謝!你是一個救星! –

1

嘗試從

string s="moveUp(),;moveDown();"; 

改變第一線

string s="moveUp();,moveDown();"; 
1

因爲分裂moveUp(),;moveDown();使得:moveUp();moveDown();

,應與;交換。