零宽断言的意思是(匹配宽度为零,满足一定的条件/断言) 我也不知道这个词语是那个王八蛋发明的,简直是太拗口了。 零宽断言用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像 其中零宽断言又分四种: (?=表达式) 零宽度正预测先行断言 表示匹配表达式前面的位置 例如,要匹配 cooking ,singing ,doing中除了ing之外的内容,只取cook, sing, do的内容,这时候的增则表达式可以用 注意:先行断言的执行步骤是这样的先从要匹配的字符串中的最右端找到第一个 ing (也就是先行断言中的表达式)然后 再匹配其前面的表达式,若无法匹配则继续查找第二个 ing 再匹配第二个 ing 前面的字符串,若能匹配则匹配,符合正则的贪婪性。 例如: (?<=表达式) 零宽度正回顾后发断言 表示匹配表达式后面的位置 例如 注意:后发断言跟先行断言恰恰相反 它的执行步骤是这样的:先从要匹配的字符串中的最左端找到第一个abc(也就是先行断言中的表达式)然后 再匹配其后面的表达式,若无法匹配则继续查找第二个 abc 再匹配第二个 abc 后面的字符串,若能匹配则匹配。 例如 (?!表达式) 负向零宽先行断言 负向零宽断言 同样,负向零宽断言也有“先行”和“后发”两种
(?﹤!表达式) 负向零宽后发断言 负向零宽断言要注意的跟正向的一样。 实战1:匹配不包含属性的HTML标签里的内容 一个更复杂的例子: 实战2:获取小括号里面的内容 博客地址:http://blog.csdn.net/xiaokui_wingfly/article/details/51919082 百度百科教程:http://baike.so.com/doc/204329-216060.html 配备一个视频讲解,非常容易理解 http://www.tudou.com/listplay/-_We06cygOw/ajlbc1Thm4A.html 文字摘录:http://jjdoor.blog.163.com/blog/static/184780342012318917389/ |
|