php 简单正则表达式遵循规则匹配的解析
内容摘要
这篇文章主要为大家详细介绍了php 简单正则表达式遵循规则匹配的解析,具有一定的参考价值,可以用来参考一下。对此感兴趣的朋友,看看idc笔记做的技术笔记。经测试代码如下:
文章正文
这篇文章主要为大家详细介绍了php 简单正则表达式遵循规则匹配的解析,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记。经测试代码如下:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | <code class = "php" > /** * * @param * @author php教程 www.idcnote.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 ); /*** 代码来自php教程(www.idcnote.com) ***/ </code> |
注:关于php 简单正则表达式遵循规则匹配的解析的内容就先介绍到这里,更多相关文章的可以留意
代码注释