php正则表达式中贪婪与非贪婪的示例分析
小编给大家分享一下php正则表达式中贪婪与非贪婪的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
一、贪婪与非贪婪
什么叫贪婪,比如说要从字符串中
我们来看看正则里面是怎么贪婪的
面包一面包二 ';preg_match('/(.*)<\/td>/',$str,$res);print_r($res); 结果:
Array
(
[0] =>面包一 面包二
[1] => 面包一面包二
)0记录的是整个字符,1表示的是第一次匹配。
怎么来限制贪婪?
面包一面包二 ';preg_match('/(.*?)<\/td>/',$str,$res);print_r($res);Array ( [0] => 面包一 [1] => 面包一 )
在修饰匹配次数的特殊符号后再加上一个 "?" 号,则可以使匹配次数不定的表达式尽可能少的匹配。
在PHP中还可以通过修饰符来实现,
面包一面包二 ';preg_match('/(.*)<\/td>/U',$str,$res);print_r($res); 结果和上面一样。这就是修饰符U的作用
二、预搜索
预搜索是一个非获取匹配,不进行存储供以后使用。
1、正向预搜索 "(?=xxxxx)","(?!xxxxx)"
"(?=xxxxx)":所在缝隙的右侧,必须能够匹配上 xxxxx 这部分的表达式,
结果:
Array
(
[0] => windows
)这个是xp前面的windows,不会取NT和2003前面的。
格式:"(?!xxxxx)",所在缝隙的右侧,必须不能匹配 xxxxx 这部分表达式
结果:
Array
(
[0] => Array
(
[0] => windows 这个是nt前面的
[1] => windows 这个是2003前面的
))
从这里可以看出,预搜索不进行存储供以后使用。
与会存储的对比下。
结果:
Array
(
[0] => Array 全部模式匹配的数组(
[0] => windows N
[1] => windows 2
)[1] => Array 子模式所匹配的字符串组成的数组,通过存储取得。
(
[0] => N
[1] => 2
))
2、反向预搜索 "(?<=xxxxx)","(?
"(?<=xxxxx)" :所在缝隙的 "左侧"能够匹配xxxxx部分。
结果:
Array
(
[0] => 56789012
)匹配除了前4个数字和后4个数字之外的中间8个数字
"(?结果:
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正则表达式中贪婪与非贪婪的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
面包 贪婪 结果 正则 表达式 搜索 所在 缝隙 存储 字符 数字 篇文章 示例 分析 内容 右侧 字符串 数组 模式 次数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 亿人帮互联网科技有限公司 互联网科技网 金融科技与互联网金融 天津摩尔互联网科技 善班互联网科技有限公司 联恩商钥互联网科技有限公司 天速互联网络科技有限公司 以后互联网后是啥科技 移动互联网科技公司 速维有品互联网信息科技(苏州)有限公司 互联网科技大奖都有哪些公司 互联网行业科技股 产业互联网科技服务公司 陕西云淼互联网科技公司 南京一网一红互联网科技有限公司 福州德业互联网科技 中国新注册互联网科技 同城互联网络科技 亚光科技低轨卫星互联网 陕西彩京云互联网科技有限公司 科技互联网公司装修 成都互联网科技公司 奇士达互联网科技 互联网 视角下的科技创新 郑州华宇互联网科技 广西拼得多互联网科技有限公司 富国互联网科技创新基金 青岛中康互联网医疗科技有限公司 智腾互联网科技有限公司 珠海东科互联网科技有限公司相关文章