2010-10-14 134 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