正则表白式中模式修改符作用详解(i、g、m、s、x、e)
甚么是模式修改符?
1, 模式修改符就是几个字母,咱们正在每一个正则表白式中能够一次应用一个,也能够延续应用多个,每个具肯定的意思。
2, 模式修改符是对整个正则表白式调优应用,也能够说是对正则表白式性能的扩大。
还记患上正则表白式的阿谁公式吗?'/原子以及元字符/模式修改符',此中正斜线为鸿沟符。
模式修改符的形成
模式修改符就是字母,只不外这些正在模式修改符的使用之中有非凡的含意。上面我来看看都有哪些模式修改符,请看下表:
因为i示意婚配没有区别巨细写,正在上面的示例中,咱们再也不进行演示,咱们来看一下其余模式修改符的示例。
1,模式修改符m。
代码以下:
<?php $pattern = '/^abc/m'; $string = 'bcd abc cba'; if (preg_match($pattern, $string, $arr)) { echo "正则表白式<b>{$pattern}</b>以及字符串<b>{$string}</b>婚配胜利<br>"; print_r($arr); } else { echo "<font color='red'>正则表白式{$pattern}以及字符串{$string}婚配失败</font>"; } ?>
婚配后果是胜利的。留意:咱们正在应用模式修改符m的时分,将婚配字符串算作是多行而没有是默许的单行,以是任何一行只需是以abc扫尾,就婚配胜利。然而,假如能婚配的行后面有空格的话,就不克不及婚配了!除了非修正正则表白式的婚配模式。
2,模式修改符s。
代码以下:
<?php $pattern = '/a.*c/s'; $string = 'adsadsa c'; if (preg_match($pattern, $string, $arr)) { echo "正则表白式<b>{$pattern}</b>以及字符串<b>{$string}</b>婚配胜利<br>"; print_r($arr); } else { echo "<font color='red'>正则表白式{$pattern}以及字符串{$string}婚配失败</font>"; } ?>
此次的婚配记功也是胜利的。假如你将上例中的模式修改符s去掉的话,婚配就会失败。由于模式修改符s将婚配字符串看做是单行的,以是这个时分,元字符中的"."就能够示意换行符号了。
3,模式修改符x。
代码以下:
<?php $pattern = '/a c/x'; $string = 'a c'; if (preg_match($pattern, $string, $arr)) { echo "正则表白式<b>{$pattern}</b>以及字符串<b>{$string}</b>婚配胜利<br>"; print_r($arr); } else { echo "<font color='red'>正则表白式{$pattern}以及字符串{$string}婚配失败</font>"; } ?>
此次的婚配后果是失败的。由于咱们应用模式修改符x勾销了模式中的空格。留意:咱们无奈应用模式修改符勾销\s示意的空缺。
4,模式修改符A。
代码以下:
<?php $pattern = '/ac/A'; $string = 'acahgyghvbm'; if (preg_match($pattern, $string, $arr)) { echo "正则表白式<b>{$pattern}</b>以及字符串<b>{$string}</b>婚配胜利<br>"; print_r($arr); } else { echo "<font color='red'>正则表白式{$pattern}以及字符串{$string}婚配失败</font>"; } ?>
正则表白式示意的含意是婚配以ac扫尾的字符串,后果胜利。
模式修改符Z示意的是以字符串末端的婚配,以及A的用法是同样的,咱们再也不进行演示。
5,模式修改符U。
这个模式修改符是非常首要的!正在正则表白式中,其自身是“贪心”的。那甚么是贪心模式呢?贪心模式的意义就是说,正则表白式默许会正在查找到第一个婚配后,持续测验考试前面的婚配,假如能找到婚配,则婚配最年夜的范畴字符串。但有的时分这并非咱们想要的后果,以是咱们需求勾销贪心模式。
咱们仍是先看一个贪心模式的例子:
代码以下:
<?php $pattern = '/<b>.*<\/b>/'; $string = '<b>welcome</b> <b>to</b> <b>phpfuns</b>'; if (preg_match($pattern, $string, $arr)) { echo "正则表白式<b>{$pattern}</b>以及字符串<b>{$string}</b>婚配胜利<br>"; print_r($arr); } else { echo "<font color='red'>正则表白式{$pattern}以及字符串{$string}婚配失败</font>"; } ?>
这个实例的本意是婚配welcome,然而后果却婚配了welcome to phpfuns整个字符串(留意咱们的字符串'welcome to phpfuns',其扫尾以及末端正好形成了正则表白式的模式婚配,以是婚配胜利),这就是正则表白式的贪心模式。当然,这没有是咱们要的后果。
勾销贪心模式
咱们能够应用模式修改符U以及元字符?两种形式勾销正则表白式的贪心模式。
模式修改符U勾销贪心模式
代码以下:
<?php $pattern = '/<b>.*<\/b>/U'; $string = '<b>welcome</b> <b>to</b> <b>phpfuns</b>'; if (preg_match($pattern, $string, $arr)) { echo "正则表白式<b>{$pattern}</b>以及字符串<b>{$string}</b>婚配胜利<br>"; print_r($arr); } else { echo "<font color='red'>正则表白式{$pattern}以及字符串{$string}婚配失败</font>"; } ?>
元字符?勾销贪心模式
代码以下:
<?php $pattern = '/<b>.*?<\/b>/'; $string = '<b>welcome</b> <b>to</b> <b>phpfuns</b>dsadsadas'; if (preg_match($pattern, $string, $arr)) { echo "正则表白式<b>{$pattern}</b>以及字符串<b>{$string}</b>婚配胜利<br>"; print_r($arr); } else { echo "<font color='red'>正则表白式{$pattern}以及字符串{$string}婚配失败</font>"; } ?>
以上就是正则表白式中模式修改符作用详解的具体内容,更多请存眷资源魔其它相干文章!
标签: php开发教程 php开发资料 php开发自学 正则表达式
抱歉,评论功能暂时关闭!