正则表达式中模式修正符作用详解-php教程

资源魔 25 0

正则表白式中模式修改符作用详解(i、g、m、s、x、e)

甚么是模式修改符?

1, 模式修改符就是几个字母,咱们正在每一个正则表白式中能够一次应用一个,也能够延续应用多个,每个具肯定的意思。

2, 模式修改符是对整个正则表白式调优应用,也能够说是对正则表白式性能的扩大。

还记患上正则表白式的阿谁公式吗?'/原子以及元字符/模式修改符',此中正斜线为鸿沟符。

模式修改符的形成

模式修改符就是字母,只不外这些正在模式修改符的使用之中有非凡的含意。上面我来看看都有哪些模式修改符,请看下表:

HES9YVP3AKR~RH0HS[R`ZVX.png

因为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开发自学 正则表达式

抱歉,评论功能暂时关闭!