有这么一个字符串:
<a href="#">one</a><a href="#">two</a>
我想匹配出 <a href="#">two</a>
于是我就写了
preg_match_all('/<a.*?>two<\/a>/',$str,$m);
得到的结果$m是
array( 0=>'<a href="#">one</a><a href="#">two</a>' )
我就纳闷了,.*? 不是指定了非贪婪模式吗?按我以前的理解就是 .* 不会包含 ? 后面的 > 字符,等效[^>]* 今天我才知道我错了。。
这里贪婪模式并不是排除问号后面的字符,理论上的意思是尽可能少的重复,什么意思呢?再举个例子:
<a href="#">one</a><a href="#">two</a><a href="#">two</a>
这时候再用同样的正则去匹配会得到
array( 0=>'<a href="#">one</a><a href="#">two</a>',1=>'<a href="#">two</a>' )
其中的区别,无法用语言表达,心领神会吧。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。