正则表达式中的不包含

需求:找出包含@,但@后面不是sina的行

支持零宽匹配的写法:@(?!sina),在Regular Expressions Tester中的结果如下

可惜的是shell下的grep不支持零宽匹配,可以用下面这个变通的方法:

adam@adam-desktop:~$ echo "mail from abc@sinb.com" | egrep  '.*@([^s]|s([^i]|i([^n]|n[^a])))'
mail from abc@sinb.com

后来发现在grep中使用-P后可以支持零宽匹配

adam@adam-desktop:~$ echo "mail from abc@sinb.com" | grep -P '.*@(?!sina)'
mail from abc@sinb.com

参考文章:
正则表达式–零宽断言详解
使用grep和正则来分析Web服务器日志(零宽断言-正则环视)

Comments are closed, but trackbacks and pingbacks are open.