php 匹配规则,php 简单正则表达式遵循规则匹配的解析

这篇文章主要为大家详细介绍了php 简单正则表达式遵循规则匹配的解析,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧。

经测试代码如下:

/**

*

* @param

* @author 512笔记 www.512pic.com

* 规则: 优先选择最左端的匹配结果

* 示例: 用/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);

/*** 代码来自512笔记(www.512pic.com) ***/

注:关于php 简单正则表达式遵循规则匹配的解析的内容就先介绍到这里,更多相关文章的可以留意512笔记的其他信息。

关键词:正则表达式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值