首页 > php教程 > PHP源码 > 正文

正则表达式普适两个原则

PHP中文网
发布: 2016-05-25 17:12:02
原创
1094人浏览过

/* 
  *  规则: 优先选择最左端的匹配结果 
  * 示例: 用/fat|cat|belly|your/ 来匹配字符窜'the dragging belly indicated that your cat is too fat.'结果是什么? 
  * 结果: 是  belly 
  * 原因: 尽管fat在所有可能选项中列子最前头,但是它们都不是最先匹配的结果,所以不会被选择,其他的可能性也都会进行尝试匹配 
 */ 
  
 preg_match('/fat|cat|belly|your/','the dragging belly indicated that your cat is too fat.',$b); 
 //如果用preg_match_all()这个函数可以把素有情况匹配出来 为什么说贪婪匹配效率低 原因可能在这里了 
 //var_dump($b); 
  
 /* 
  * 规则: 标准量词是匹配优先的 
  * 示例: 用subject:(.*) 来匹配 'subject:wyxwuyongxin@126.com' 
  * 变化1: subject:(.*).* 
  * 变化2: subject:(.*)(.*) 
  * 结果: wyxwuyongxin@26.com 
  * 变化1结果: subject:wyxwuyongxin@26.com   wyxwuyongxin@26.com 
  * 变化2结果: subject:wyxwuyongxin@26.com   $1 wyxwuyongxin@26.com  $2 为空 
  * 变化1原因: .*是优先匹配的可以捕获$1的值为 wyxwuyongxin@26.com 第一个.*会霸占整个标题的文本,而不给第二个.*留下任 
  *何字符 
  * 第二个字符失败也补要紧,因为 .*不匹配任何字符也能成功. 
  * 变化2原因: 先来先服务, 后边没有必须匹配字符 所以不会强迫之前优先的部分释放某些字符 
  */ 
 preg_match('/subject:(.*)/','subject:wyxwuyongxin@26.com',$c); 
 preg_match('/subject:(.*).*/','subject:wyxwuyongxin@26.com',$c); 
 preg_match('/subject:(.*)(.*)/','subject:wyxwuyongxin@26.com',$c); 
 //var_dump($c); 
  
 /* 
  * 示例: 用/^.*([0-9][0-9])/ 匹配about 24 long 
  * 结果: about 24    $1捕获  24 
  * 原因: (过度优先匹配)[0-9]是必须匹配,在尝试匹配行末的时候回失败,这样会通知.* "你占用的太多了,交出一些,这样的我也 
  * 能匹配"优先组建首先会匹配尽可能多的字符,但是为了整个表达式,他通常要释放掉一些字符 遇到第一个[0-9]要求释放'g' 但是 
  * 还是不能匹配还要交还 下一个n o l 直到'4' 第二个[0-9] 在要求释放掉一个字符  这样就得到了 $1 24 
  */ 
 preg_match('/^.*([0-9][0-9])/','about 24 long',$d); 
 //var_dump($d); 
 /* 
  * 用/.*[0-9]+/ 来匹配'copyright 2003.' 
  * 结果: copyright 2003    $1捕获    3 
  * 原因: 释放掉3和点号 之后3能由[0-9]匹配  但是[0-9]是由+修饰的还要尽可能多的匹配 但是遇到了'.'找不到其他可以匹配的字符 
  * 没有必须匹配元素 所以不会被迫交出 0 (先来先服务原则) 所以$1  最终的值是  3 
  */ 
 preg_match('/.*([0-9]+)/','copyright 2003.',$str); 
 var_dump($str);
登录后复制

                   

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号