我怎样才能得到这个正则表达式结果的否定?
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
答案 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"))
{
}