正则表达式中的贪婪与非贪婪模式

来源:互联网 发布:gjb软件版本说明 编辑:程序博客网 时间:2024/06/07 06:43

贪婪模式是指匹配时尽可能匹配多的字符串,非贪婪模式则匹配尽可能少的字符串。

使用正则表达式进行匹配时,可能会出现多种匹配结果都符合的情况。而在php中,默认匹配贪婪模式。

如:

$str="<td>张三</td><td>29</td>";$pattern="/<td>(.*)<\/td>/";preg_match_all($pattern,$str,$matches);var_dump($matches[0]);

匹配结果为:


若要进行非贪婪的匹配,只需在匹配pattern中加上"?"。在修饰匹配次数的特殊符号后再加上一个 "?" 号,则可以使匹配次数不定的表达式尽可能少的匹配。

上例中,非贪婪的匹配如下:

$str="<td>张三</td><td>29</td>";$pattern="/<td>(.*?)<\/td>/";preg_match_all($pattern,$str,$matches);var_dump($matches[0]);

结果:


1 0
原创粉丝点击