场景说明:
在多行文本中,排除包含特定字符串的行。"grep -v"能够很好的解决,并且kmp算法
也能够解决这个问题。但是如果规定使用正则表达式,是否可以完成这个任务。在探索的过程中,
也了解grep一些不支持的语法。
- grep 之下不支持 ? 与 + 这两种 modifier, 但 egrep 则可.
- grep 不支持 a|b 或 (abc|xyz) 这类"或一"比对, 但 egrep 则可.
- grep 在处理 {n,m} 时, 需用 { 与 } 处理, 但 egrep 则不需.
参考文献:
http://www.cnblogs.com/wangqiguo/archive/2012/05/08/2486548.html
解决方案:
例如,需要排除包含abc子串的行,可以这样子写:^(?!.*abc).*$
在正则表达式工具Regexbuddy中测试通过,但是在grep和egrep皆无法实现该功能,如果不使用-v
参数
本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1434967,如需转载请自行联系原作者