天空小小岛技术网站
标题:
正则表达式匹配不包含某个字符串(不包含某个单词)
[打印本页]
作者:
s.Bo
时间:
2013-11-13 17:14
标题:
正则表达式匹配不包含某个字符串(不包含某个单词)
正则表达式匹配不包含某个字符串(不包含某个单词)使用正则表达式找出不包含特定字符串的条目
这里要使用
否定式前瞻
正则表达式中有前瞻(Lookahead)和后顾(Lookbehind)的概念,这两个术语非常形象的描述了正则引擎的匹配行为。需要注意一点,正则表达式中的前和后和我们一般理解的前后有点不同。一段文本,我们一般习惯把文本开头的方向称作“前面”,文本末尾方向称为“后面”。但是对于正则表达式引擎来说,因为它是从文本头部向尾部开始解析的(可以通过正则选项控制解析方向),因此对于文本尾部方向,称为“前”,因为这个时候,正则引擎还没走到那块,而对文本头部方向,则称为“后”,因为正则引擎已经走过了那一块地方。
所谓的前瞻就是在正则表达式匹配到某个字符的时候,往“尚未解析过的文本”预先看一下,看是不是符合/不符合匹配模式,而后顾,就是在正则引擎已经匹配过的文本看看是不是符合/不符合匹配模式。符合和不符合特定匹配模式我们又称为肯定式匹配和否定式匹配。
现代高级正则表达式引擎一般都支持都支持前瞻,对于后顾支持并不是很广泛,因此我们这里采用否定式前瞻来实现我们的需求。
前瞻的语法是:
(?!匹配模式)
复制代码
$a = 'http://tkxxd.com/xx';
// $a = 'http://tkxxd.net/xx';
// $a = 'http://baidu.com/xx';
找出不含 baidu 的
preg_match("/http\:\/\/(?!baidu)[^\/]+/i", $a, $match);
var_dump($match);
欢迎光临 天空小小岛技术网站 (http://tkxxd.net/)
Powered by Discuz! X3.1