我想用正则匹配得到不在超链接中的百度
如方针字符为:啊拉丝百度机的了深刻的<a href="http://www.baidu.com">阿隆索的肌肤百度了处所百度卡萨控</a>肌肤啊拉丝机的<a href="http://www.baidu.com" target="_blank">百度知道</a>爱龙卷风考四级处所sdjf百度sdlkj
其实就是为了不让百度呈此刻 <a>百度</a> 这个位置
有一个答复真的很妙: 百度(?![^<>]*?</a>)
简朴来说是每找到一个百度,用个(?!……)否认式向前看,和[^<>]
匹配条件1 : 前面直接碰着</a>的就不匹配,
匹配条件2 : 碰着 “<” 或 “>” 说明不是在<a>标签中
妙就妙在否认式再加一个否就是必定了,就是查找百度之后有<或>的就乐成匹配,有</a>不匹配
上一个PHP例子演示:
<?php $data = '<a href="http://www.baidu.com">阿隆索的肌肤百度了处所百度卡萨控</a>肌肤啊拉'; $search = '/百度(?![^<>]*?<\/a>)/i'; $rr = preg_match($search, $data); if($rr>0) { echo '百度不在a链接中'; }else { echo '百度在a链接中'; } ?>end
附件下载/演示源码:
【 noina.htm 】 4.02KB
分享到: 更多
相关日志:
PHP验证身份证的正则表达式
编程语言中十六进制的正则匹配
将[code]标签内的所有<br/>替换成#号
PHP正则匹配6到16位字符构成,只可有数字、字母、下划线
如何用php正则去掉获得img标签中的 border属性
php如何将相对路径转换为绝对路径
php利用strip_tags的完整去除所有html标签
正则高级能力之三目运算
正反向预搜索(前后查察)初解