http://www.imkevinyang.com/2009/08/使用正则表达式找出不包含特定字符串的条目.html
正则基本知识
http://xixian.iteye.com/blog/721147
正则表达式中有前瞻(Lookahead)和后顾(Lookbehind)的 概念,这两个术语非常形象的描述了正则引擎的匹配行为。需要注意一点,正则表达式中的前和后和我们一般理解的前后有点不同。一段文本,我们一般习惯把文本 开头的方向称作“前面”,文本末尾方向称为“后面”。
但是对于正则表达式引擎来说,因为它是从文本头部向尾部开始解析的(可以通过正则选项控制解析方向),因此对于文本尾部方向,称为“前”,因为这个时候,正则引擎还没走到那块,而对文本头部方向,则称为“后”,因为正则引擎已经走过了那一块地方 。
如下图所示:
前瞻就是在正则表达式匹配到某个字符的时候,往“尚未解析过的文本”预先看一下,看是不是符合/不符合匹配模式。
后顾,就是在正则引擎已经匹配过的文本看看是不是符合/不符合匹配模式。符合和不符合特定匹配模式我们又称为肯定式匹配和否定式匹配
现在看它们的定义方法吧(零断言,不用管术语名称,翻译太拗口复杂了)
Java代码
- //前瞻
- (?=exp)真正有用的部分,在这个位置之前,之前的数据需要匹配exp
- (?<=exp)真正有用的部分,在这个位置之后,之后的数据需要匹配exp
- //后顾
- (?!exp)真正有用的部分,在这个位置之前,之前的数据不匹配exp
- (?<!exp)真正有用的部分,在这个位置之后,之后的数据不匹配exp
开始写不含特定字符的正则
参考例子说明