2010-10-14 168 views
0

使用下面的代碼:C#regexoptions.ignorecase似乎並沒有工作

string pat = @"ENGL101_.*_(.*)"; 
Regex r = new Regex(pat, RegexOptions.IgnoreCase); 

匹配: ENGL101_BELIEVE_WRIGHTSTONE.docx

但不是: Engl101_ThisIBelieve_Williams.docx

IGNORECASE是導通 - 問題是什麼?

+3

沒有看到任何問題與此有關。這個對我有用。 你的代碼是否匹配? – skyfoot 2010-10-14 15:40:43

+0

它確實是'Engl'而不是'EngI'; '101'而不是'1O1'? – 2010-10-14 17:46:58

回答

0

無法攝製 - 試圖摘錄編譯器和:

public static void RunSnippet() 
    { 
     string pat = @"ENGL101_.*_(.*)"; 
     Regex r = new Regex(pat, RegexOptions.IgnoreCase); 

     Match m = r.Match("ENGL101_BELIEVE_WRIGHTSTONE.docx"); 

     WL(m.Success); 

     m = r.Match("Engl101_ThisIBelieve_Williams.docx"); 

     WL(m.Success); 
    } 

返回

True 
True 
0

我知道這聽起來很明顯,但你嘗試過對

ENGl101_THISIBELIEVE_WILLIAMOS.docx

不匹配忽略大小寫?

2

我不能複製這個問題;這兩個字符串看起來都與表達式匹配。

[STAThread] 
static void Main() 
{ 
    string pat = @"ENGL101_.*_(.*)"; 
    Regex r = new Regex(pat, RegexOptions.IgnoreCase); 

    Console.WriteLine(r.IsMatch(@"ENGL101_BELIEVE_WRIGHTSTONE.docx")); 
    Console.WriteLine(r.IsMatch(@"Engl101_ThisIBelieve_Williams.docx")); 
} 

輸出:

True 
True 

的問題一定是別的東西,也許?

+0

我同意。使用「匹配」和「替換」工作正常。 – skyfoot 2010-10-14 15:43:17