代码之家  ›  专栏  ›  技术社区  ›  Nathan Ridley

.NET正则表达式-如何对完整字符串执行完全匹配排除?

  •  5
  • Nathan Ridley  · 技术社区  · 14 年前

    我需要一个.NET正则表达式来匹配指定的完全字符串匹配以外的任何内容。所以基本上:

    ^Index$
    

    …是我唯一关心的例外。字符串可以以“index”开头、结尾或包含“index”,但不能完全匹配。我的大脑今天似乎不工作,我也没能解决这个问题。

    编辑

    答案必须通过模式本身,因为我正在将一个参数传递给第三方库,除了通过regex模式之外,不能控制进程。

    4 回复  |  直到 14 年前
        1
  •  5
  •   Lucero    14 年前

    这样就可以做到:

    ^(?!Index$)
    
        2
  •  4
  •   YOU    14 年前

    如果必须使用regex,

    Match match = Regex.Match(input, @"^Index$");
    
    if (!match.Success){
        //do something
    }
    

    以可怕的方式

    Match match = Regex.Match(input, @"^(.*(?<!Index)|(?!Index).*)$");
    
    if (match.Success){
        //do something
    }
    

    注意:第二个没有测试,Regex引擎需要支持全面的前瞻性和前瞻性。

        3
  •  0
  •   Marcelo Cantos    14 年前

    怎么样 if (!r.Match("^Index$").Success) ... ?

        4
  •  0
  •   Andrey    14 年前

    你可以查一下 !regex.Match.Success