0

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

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  
4

3 回答 3

2

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

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

例如,如果您的输入是一个文件并且您在 Unix 环境中工作:

猫输入.txt | sed s/my-positive-regexp//g

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

于 2012-11-15T12:46:50.880 回答
0

在这里查看我的答案:https ://stackoverflow.com/a/12139118/1548853

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

于 2012-11-08T16:25:09.463 回答
0

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

    if (!Regex.IsMatch("input", "pattern")) 
    {
    }
于 2012-11-08T17:09:18.363 回答