php正则表达式中贪婪与非贪婪介绍
(编辑:jimmy 日期: 2024/11/18 浏览:3 次 )
一、贪婪与非贪婪
什么叫贪婪,比如说要从字符串中<td>面包一</td><td>面包二</td>吃面包,本来你只可以吃面包一,可是你贪心,于是就把第一个<td>到最后一个</td>里面的两个面包取出来了,你想多吃点,非贪婪也就是你不贪吃了,就只吃面包一。
我们来看看正则里面是怎么贪婪的
<"htmlcode"><"" 号,则可以使匹配次数不定的表达式尽可能少的匹配。在PHP中还可以通过修饰符来实现,
<"(","(""("htmlcode">
<"(",所在缝隙的右侧,必须不能匹配 xxxxx 这部分表达式<"htmlcode">上一篇:正则表达式如何在PHP里灵活的应用<"(","(""(" :所在缝隙的 "左侧”能够匹配xxxxx部分。
<"(":所在缝隙的“左侧”不能匹配xxxx部分。
<?php $str = '我1234567890123456'; preg_match('/(?<!我)\d+/',$str,$res); print_r($res);结果:
Array
(
[0] => 234567890123456
)
三、preg和ereg的区别
PHP同时使用两套正则表达式规则,一套是由电气和电子工程师协会(IEEE)制定的POSIX Extended 1003.2兼容正则(事实上PHP对此标准的支持并不完善),另一套来自PCRE(Perl Compatible Regular Expression)库提供PERL兼容正则。 PHP5.3开始POSIX被删除了。preg_match 比 ereg效率高。
下一篇:IP地址正则表达式匹配方法