假设我们有这个html内容,我们愿意用正则表达式获取Content1,Content2,..
<li>Content1</li>
<li>Content2</li>
<li>Content3</li>
<li>Content4</li>
Run Code Online (Sandbox Code Playgroud)
如果我使用下面的行
preg_match_all('/<li>(.*)<\/li>/', $text, $result);
Run Code Online (Sandbox Code Playgroud)
我将获得一个包含以下行的数组:
Content1</li>
<li>Content2</li>
<li>Content3</li>
<li>Content4
Run Code Online (Sandbox Code Playgroud)
并通过使用此代码:
preg_match_all('/<li>(.*?)<\/li>/', $text, $result);
Run Code Online (Sandbox Code Playgroud)
我将获得一个包含Content1,Content2,...的4行数组...
为什么(.*)不起作用,因为它意味着 match any character zero or more times
Tho*_*mas 20
*以贪婪的方式*?比赛,以非贪婪的方式比赛.
这意味着.*将匹配尽可能多的字符,包括所有中间</li><li>对,仅在最后一次出现时停止</li>.另一方面,.*?将匹配尽可能少的字符,在第一次出现时停止</li>.