4.7. 贪恋型与懒惰型匹配
贪婪型量词 | 懒惰型量词 |
---|---|
* | *? |
+ | +? |
{n,} | {n,}? |
下面我们来匹配两个 div
标签中的文本来做例子
1、贪婪型
<?php
//字符串
$str = '<div>1</div> <span>2</span> <div>3</div>';
//正则表达式
$regular = '/<div>.*<\/div>/';
//执行匹配正则表达式
preg_match_all($regular, $str, $matches);
//打印结果
echo '<pre>';
print_r($matches);
echo '</pre>';
输出结果
Array
(
[0] => Array
(
[0] =>
1
2
3
)
)
从结果可以看出,我们把 <sapn>2</span>
的结果也匹配起来了,这就是贪婪模式,尽可能的去多匹配。
但我们只需要匹配 div
中的内容,所以就需要用到下面的懒惰模式了
2、懒惰型
<?php
//字符串
$str = '<div>1</div> <span>2</span> <div>3</div>';
//正则表达式
$regular = '/<div>.*?<\/div>/';
//执行匹配正则表达式
preg_match_all($regular, $str, $matches);
//打印结果
echo '<pre>';
print_r($matches);
echo '</pre>';
输出结果
Array
(
[0] => Array
(
[0] =>
1
[1] =>
3
)
)
使用懒惰型匹配结果后,可以看出,只匹配了 div
之间的内容,没有再匹配 span
的内容了。这就是懒惰模式,它会尽可能的少匹配
推荐文章: