45IT.COM- 电脑学习从此开始!
DIY硬件教程攒机经验装机配置
设计Photoshop网页设计特效
系统注册表DOS系统命令其它
存储主板显卡外设键鼠内存
维修显卡CPU内存打印机
WinXPVistaWin7unix/linux
CPU光驱电源/散热显示器其它
修技主板硬盘键鼠显示器光驱
办公ExcelWordPowerPointWPS
编程数据库CSS脚本PHP
网络局域网QQ服务器
软件网络系统图像安全
页面导航: 首页 > 设计学院 > 网络编程 > PHP教程 >

正则表达式教程之模式修正符(2)

电脑软硬件应用网 45IT.COM 时间:2012-10-05 11:17 作者:佚名

        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>";
    }
?>

注意元字符的位置,我们必须在“”之前结束贪婪模式,才能达到我们的目的,匹配welcome!

本节我们介绍了正则表达式中的模式修正符,正则表达式的贪婪模式以及演示了正则表达式中模式修正符的使用方法。到此为止,基本的正则表达式语法构成我们也学习完了。在下一节,我们介绍一些常用的正则表达式,供大家查阅使用。

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
无法在这个位置找到: baidushare.htm
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
推荐知识