鬼斧神工-正则表达式☞修正模式(进阶)
2017-05-08 13:12
363 查看
修正模式:
由于正则表达式匹配的目标字符串复杂多样,有些时候,同一个正则表达式匹配同一个字符串的时候存在匹配出两种或者是多种情况的可能,这就让匹配出现了歧义,修正模式就是为了解决这个问题而存在的。下面我们来看两个比较重要的修正模式:
贪婪匹配:匹配结果存在歧义时取其长
在默认情况下,正则表达式采用的贪婪模式,也就是选用的最长的那个。
下面,我们来举个栗子:<?php $pattern = '/imooc.+123/'; $subject = 'I love imooc__123123123123123123'; //此时,__123可以作为.+的匹配结果,但是__123123也可以作为.+的匹配结果 //在默认情况下,采用的是贪婪模式,也就是选用最长的那个 $matches = array(); preg_match($pattern,$subject,$matches); show($matches); function show($var = null){ if(empty($var)){ echo 'null'; } else if(is_array($var)||is_object($var)){ //array,object echo '<pre>'; print_r($var); echo '</pre>'; } else{ //string ,int ,float... echo $var; } } ?>
懒惰匹配:匹配结果存在歧义时取其短
如果要利用懒惰匹配,只需在正则表达式的结束符后面加上一个大写字母U即可。<?php $pattern = '/imooc.+123/U'; $subject = 'I love imooc__123123123123123123'; //此时,__123可以作为.+的匹配结果,但是__123123也可以作为.+的匹配结果 //在默认情况下,采用的是贪婪模式,也就是选用最长的那个 $matches = array(); preg_match($pattern,$subject,$matches); show($matches); function show($var = null){ if(empty($var)){ echo 'null'; } else if(is_array($var)||is_object($var)){ //array,object echo '<pre>'; print_r($var); echo '</pre>'; } else{ //string ,int ,float... echo $var; } } ?>
常见的修正模式:
U 懒惰匹配i 忽略英文字母大小写
x 忽略空白
s 让元字符' . ' 匹配包括换行符在内的所有字符
e
我们还可以既使用懒惰匹配,又忽略大小写。例如:'/iLoveYOu/Ui'
相关文章推荐
- 正则表达式中的模式修正符
- 正则表达式模式修正符(/ies)
- php正则表达式的模式修正符和逆向引用使用介绍
- 正则表达式模式修正符
- 模式修正符 -- 解说正则表达式模式中使用的修正符
- PHP正则表达式模式修正符
- 正则表达式模式修正符
- javascript正则表达式 模式修正符大全 很关键 正则表达式中/i,/g,/ig,/gi,/m的区别和含义
- 正则表达式中模式修正符作用详解(i、g、m、s、x、e)
- 正则表达式模式修正符 比如/esi
- php 正则表达式(模式修正符)
- 二:字符串和正则表达式_正则表达式的模式修正符
- PHP正则表达式学习(一) 模式修正符
- [导入]php正则表达式中的模式修正符
- 正则表达式模式修正符(/ies)
- 二:字符串和正则表达式_正则表达式的模式修正符
- 二:字符串和正则表达式_正则表达式的模式修正符
- 正则表达式教程之模式修正符
- js 正则表达式中/i,/g,/ig,/gi,/m(模式修正符)的区别和含义