代码之家  ›  专栏  ›  技术社区  ›  Caveatrob

C RegexOptions.IgnoreCase似乎不起作用。

  •  0
  • Caveatrob  · 技术社区  · 15 年前

    使用以下代码:

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

    比赛: 英语101?相信?wrightstone.docx

    但不是: 英语101?Thisibelieve?williams.docx

    IgnoreCase开了——出什么问题了??

    3 回复  |  直到 15 年前
        1
  •  0
  •   John Warlow    15 年前

    无法在代码段编译器中重新尝试,并且:

        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
    
        2
  •  2
  •   Ani    15 年前

    我无法复制这个问题;两个字符串似乎都与表达式匹配。

    [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
    

    问题可能是别的什么吧?

        3
  •  0
  •   bevacqua    15 年前

    我知道这听起来很明显,但你有没有试过与

    英语101?Thisibelieve?wiliamos.docx

    不忽略案例?