字符串上的正则表达式否定

时间:2012-11-08 16:08:14

标签: .net regex regex-negation

我怎样才能得到这个正则表达式结果的否定?

8000[0-9]{12}|4000[0-9]{12}|2000[0-9]{11}

我只想修改正则表达式以获得否定。

此示例的示例:

200045646587982  
8000046678465132  
8000078526654112  
4000846464256741  
4000875465123111  
8318548479844423  
8020489065458054  

如果我执行当前的正则表达式,我得到的结果是:

200045646587982  
8000046678465132  
8000078526654112  
4000846464256741  
4000875465123111  

我希望正则表达式反过来:

8318548479844423  
8020489065458054  

3 个答案:

答案 0 :(得分:2)

这取决于您可以使用的工具。

我会接受我的输入并使用“正面”正则表达式用空字符串替换匹配的行,然后去除它们。

例如,如果您的输入是文件而您正在Unix环境中工作:

cat input.txt | sed s / my-positive-regexp // g

会用空字符串替换匹配的字符串。

答案 1 :(得分:0)

在此处查看我的回答:https://stackoverflow.com/a/12139118/1548853

尽管答案并非完全针对您,但同样的原则也适用。

答案 2 :(得分:0)

我认为这比反转/否定模式更简单。

    if (!Regex.IsMatch("input", "pattern")) 
    {
    }
相关问题