网络编程 
首页 > 网络编程 > 浏览文章

php正则表达式中贪婪与非贪婪介绍

(编辑:jimmy 日期: 2024/11/18 浏览:3 次 )

一、贪婪与非贪婪

什么叫贪婪,比如说要从字符串中<td>面包一</td><td>面包二</td>吃面包,本来你只可以吃面包一,可是你贪心,于是就把第一个<td>到最后一个</td>里面的两个面包取出来了,你想多吃点,非贪婪也就是你不贪吃了,就只吃面包一。

我们来看看正则里面是怎么贪婪的

<"htmlcode">
<"" 号,则可以使匹配次数不定的表达式尽可能少的匹配。

在PHP中还可以通过修饰符来实现,

<"(","("

"("htmlcode">

<"(",所在缝隙的右侧,必须不能匹配 xxxxx 这部分表达式

<"htmlcode">
<"(","("

"(" :所在缝隙的 "左侧”能够匹配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效率高。

上一篇:正则表达式如何在PHP里灵活的应用
下一篇:IP地址正则表达式匹配方法