php – (.*)而不是(.*?)

前端之家收集整理的这篇文章主要介绍了php – (.*)而不是(.*?)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我们有这个html内容,我们愿意用正则表达式获取Content1,Content2,..
<li>Content1</li>
<li>Content2</li>
<li>Content3</li>
<li>Content4</li>

如果我使用下面的行

preg_match_all('/<li>(.*)<\/li>/',$text,$result);

我将得到一个包含以下单行的数组:

Content1</li>
<li>Content2</li>
<li>Content3</li>
<li>Content4

并通过使用此代码

preg_match_all('/<li>(.*?)<\/li>/',$result);

我将得到一个包含4行的数组,包含Content1,…

为什么(.*)不起作用,因为它意味着匹配任何字符零次或多次

*以贪婪的方式比赛,*?以非贪婪的方式比赛.

这意味着.*将匹配尽可能多的字符,包括所有中间< / li>< li>对,仅在最后一次出现的< / li>时停止.另一方面,.*?将匹配尽可能少的字符,在第一次出现< / li>时停止.

猜你在找的PHP相关文章