php正则的正反向预查

By | 2014/07/19

首先正/反向预查都是非获取匹配

1、正向预查
(?:pattern) 匹配结果。Java(?:6|7)等效于Java6|Java7,结果Java6 Java7
(?=pattern) 正向匹配。Java(?=6),匹配后面跟着6的Java,即第一个Java,结果Java6 Java7
(?!pattern) 正向不匹配。Java(?!6),匹配后面不跟着6的Java,即第二个Java,结果Java6 Java7

2、反向预查
(?<=pattern) 反向匹配。(?<=J)a,匹配紧跟字母J后面的a,结果Java6 Java7
(?<!pattern) 反向不匹配。(?<!J)a,不匹配紧跟字母J后面的a,结果Java6 Java7

ps:php的正则默认是贪婪模式的,只需要在限定符后面添加?标记,即可转化为懒惰模式。

发表评论

电子邮件地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据