鬼斧神工-正则表达式☞修正模式(进阶)
来源:互联网 发布:手机淘宝怎么找小二 编辑:程序博客网 时间:2024/05/16 11:08
修正模式:
由于正则表达式匹配的目标字符串复杂多样,有些时候,同一个正则表达式匹配同一个字符串的时候存在匹配出两种或者是多种情况的可能,这就让匹配出现了歧义,修正模式就是为了解决这个问题而存在的。
下面我们来看两个比较重要的修正模式:
贪婪匹配:匹配结果存在歧义时取其长
在默认情况下,正则表达式采用的贪婪模式,也就是选用的最长的那个。
下面,我们来举个栗子:
<?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'
0 0
- 鬼斧神工-正则表达式☞修正模式(进阶)
- 鬼斧神工-正则表达式☞实战应用
- 鬼斧神工-正则表达式(基本语法)
- 正则表达式 模式修正
- 鬼斧神工正则表达式终结篇
- 正则表达式模式修正符
- 正则表达式--模式修正符
- 正则表达式三 (修正模式)
- 模式修正符--正则表达式
- PHP正则表达式模式修正符
- 正则表达式模式修正符(/ies)
- 正则表达式中的模式修正符
- PHP正则表达式模式修正符
- php 正则表达式(模式修正符)
- php 正则表达式(模式修正符)
- PHP正则表达式模式修正符
- php正则表达式—修正模式
- 正则表达式之模式修正符
- PAT 乙级 1029. 旧键盘(20)
- C++ Primer 第5版--练习10.35
- 网站最下方的版权信息源代码仅供参考
- Spring——${}和#{}
- python中的正则表达式(模式匹配)
- 鬼斧神工-正则表达式☞修正模式(进阶)
- 20170507 数组,指针
- 记录自已学习之关键字const
- Mysql 远程连接失败的问题
- 40. Combination Sum II
- AtCoder:Median Pyramid Easy(思维)
- 二叉树的学习(中)
- 【动态规划】Leetcode编程题解:198. House Robber Add to List
- Easy-30