二:字符串和正则表达式_正则表达式的模式修正符

正则表达式的模式修正符

模式修正符是为正则表达式增强和补充的一个功能,使用在正则之外. 
格式:/ 正则 / 模式修正符  

常用模式修正符有:
正则内容在匹配时候不区分大小写(默认是区分的) 
在匹配首内容或者尾内容时候采用多行识别匹配 
s 将转义回车/n取消是为单行匹配如. 
忽略正则中的空白 
强制从头开始匹配 
D 强制$匹配尾部无任何内容包括/n
U 禁止贪婪匹配 只跟踪到最近的一个匹配符并结束,常用在采集程序上的正则表达式


/正则/i 实例如下
<?php
$mode = "/aaa/";
$string = "AaA";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配失败!
加上模式修正符i后
<?php
$mode = "/aaa/i";
$string = "AaA";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配成功:AaA


/正则/m 实例如下
<?php
$mode = "/^aaa/";
$string = "AaA/naaabbb";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配失败!
加上模式修正符m后
<?php
$mode = "/^aaa/m";
$string = "AaA/naaabbb";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配成功:aaa

/正则/s 实例如下
<?php
$mode = "/444(.*)222/";
$string = "444erw/n234222";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配失败!        //由于.是不括/n换行符的任何字符,所以匹配失败了
加上模式修正符s后
<?php
$mode = "/444(.*)222/s";
$string = "444erw/n234222";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配成功:444erw 234222    
//由于模式修正符su将/n换行符忽略掉换成了空格,所以匹配成功

/正则/x 实例如下
<?php
$mode = "/(/d)//1 3/";
$string = "44222443";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配失败!
加上模式修正符x后
<?php
$mode = "/(/d)//1 3/x";         //模式修正符将1与3之间的空格去除并且先算//1再看数字3
$string = "44222443";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配成功:443

/正则/A 实例如下
<?php
$mode = "/^aaa/m";
$string = "AaA/naaabbb";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配成功:aaa
加上模式修正符A后
<?php
$mode = "/^aaa/mA";             //模式修正符A强制从头开始匹配,这使行模式修正符m多行匹配失去作用
$string = "AaA/naaabbb";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配失败!

/正则/D 实例如下
<?php
$mode = "/321$/";
$string = "AaA/naaabbb321/n";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配成功:321
加上模式修正符D后
<?php
$mode = "/321$/D";         //D 强制$匹配尾部无任何内容包括不能有/n
$string = "AaA/naaabbb321/n";
if(preg_match($mode,$string,$arr))
echo "匹配成功:"."<font color=red >$arr[0]</font>";
else
echo "匹配失败!";
?>
运行结果:匹配失败!";




/正则/U 实例如下
<?php
   $mode = "/<(.+)>/";
   $string = "sfew<3432>sdds<42423>ffdsf";
   if(preg_match($mode,$string,$arr))
      echo $arr[0];
   else
echo "匹配失败!";
?>
运行结果:<3432>sdds<42423>          //这时因为正则表达式在匹配时默认情况下是贪婪匹配
加上模式修正符U后
<?php
$mode = "/<(.+)>/U";
$string = "sfew<3432>sdds<42423>ffdsf";
if(preg_match($mode,$string,$arr))
echo $arr[0];
else
echo "匹配失败!";
?>
运行结果:<3432>                     //加上模式修正符U后禁止贪婪匹配

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值