关于零宽断言的表明

以下内容是网上收集的对付零宽断言的表明较量有用尤其表明白(?=exp) 和(?<=exp)的浸染

假如我的一个页面里有如下的内容
xxxxxxx<a href="http://enenba.com/233109" title="GossipGirl">GossipGirl</a><cite title=xxxxxxxxx
我需要查出所有在“ title="GossipGirl">GossipGirl</a><cite”里的内容,即“GossipGirl”,可是内容除了 </a><cite 是可有的外,其它的都是可变的,那么可以用零宽断言方法实现
代码:

echo '<pre>'; $s = file_get_contents ( './sw.txt' ); preg_match_all ( '/[^>]+(?=<\/a><cite)/', $s, $m ); var_dump ( $m ); exit ();


另注:关于零宽断言的表明
接下来的四个用于查找在某些内容(但并不包罗这些内容)之前或之后的对象,也就是说它们像\b,^,$那样用于指定一个位置,这个位置应该满意必然的条件(即断言),因此它们也被称为零宽断言。最好照旧拿例子来说明吧:
(?=exp)也叫零宽度正预测先行断言,它断言自身呈现的位置的后头能匹配表达式exp。好比\b\w+(?=ing\b),匹配以ing末了的单词的前面部门(除了ing以外的部门),如查找I'm singing while you're dancing.时,它会匹配sing和danc。
(?<=exp)也叫零宽度正回首后发断言,它断言自身呈现的位置的前面能匹配表达式exp。好比(?<=\bre)\w+\b会匹配以re开头的单词的后半部门(除了re以外的部门),譬喻在查找reading a book时,它匹配ading。
如果你想要给一个很长的数字中每三位间加一个逗号(虽然是从右边加起了),你可以这样查找需要在前面和内里添加逗号的部门:((?<=\d)\d{3})+\b,用它对1234567890举办查找时功效是234567890。
下面这个例子同时利用了这两种断言:(?<=\s)\d+(?=\s)匹配以空缺符隔断的数字(再次强调,不包罗这些空缺符)。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7981.html