曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3376|回复: 0
打印 上一主题 下一主题

模式修正符

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2012-5-21 17:03:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
模式修正符号在正则表达式界定符之外使用,比如 /groad/i 中的 i 就是修正符,它表示不区分大小写。模式修正符可以调整正则表达式的解释,扩展正则表达式在匹配,替换等操作时的某些功能。可以将多个修正符号组合使用以增强正则表达式的能力。下标是一些常用的修正符号说明:
修正符功能描述
i不区分大小写
s模式中的圆点元字符"."将匹配所有字符,包括换行符。
x模式中的空白忽略不计,除非它已经被转义
e只用在 preg_replace() 函数中,在替换字符串中对你想引用做正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串。
m
将字符串视为多行,默认的正则开始 "^" 和 结束 "$" 将目标字符串作为单一的一“行”字符(甚至其中包含有换行符也是如此)。如果在修饰符中加上 "m",那么开始和结束将会指字符串的每一行,每一行的开头就是 "^",结尾就是 "$" 。
U
贪婪模式,最大限度匹配
D
模式中的美元元字符仅匹配目标字符串的结尾。没有该选项的话,如果最后一个字符是换行符的话,没有符号也会匹配匹配此字符之前。如果设定了该修正符那么忽略此选项。


示例一
[PHP] 纯文本查看 复制代码
<?php
    $url = "Groad.Net";
    
    preg_match("/groad. net/ix", $url, $myarray);
    
    echo "$myarray[0]"; 
?>

运行输出:
Groad.Net
上面使用 i 修正符忽略了大小写以及使用 x 修正符忽略了匹配模式中的空白符,因此最后能够匹配 Gorad.Net 这个字符串。

示例二
[PHP] 纯文本查看 复制代码
<?php

    $url = "Have you read the article on information information revolution";
    
    preg_match("/article.+?information/", $url, $myarray);
    
    echo "$myarray[0]"; 
?>

运行输出:
article on information
注意,上面使用的 .+? 本身是一种非贪婪形式(.+ 后面有一个问号 ?)。如果将正则中的问号去掉,即将 “.+?" 写成 ".+" ,那么它就是贪婪形式,那么会输出:
article on information information
但是,使用贪婪形式时,我们可以写成:
[Plain Text] 纯文本查看 复制代码
/article.+?information/U

这样也会输出 article on information information 。这是因为,我们使用了 U 这个修正符,它正是要进行贪婪修正的,即可以将一个不贪婪的人变成一个贪得无厌的人。
(正则中贪婪和非贪婪的概念可参考:http://www.groad.net/bbs/read.php?tid=4913)

示例三
[PHP] 纯文本查看 复制代码
<?php

    $url = "This\nis\na good website";
    
    preg_match("/^is/", $url, $myarray);
    
    echo "$myarray[0]"; 
?>

上面代码输出为空。如果将匹配模式 /^is/ 改为 /^is/m ,即后面添加了修正符 m ,那么代码输出为 is 。这是因为,被测字符串中有两个换行符(\n),如果不用 m 时,那么就只认为从第一个 ^ 开始到最后的 $ 就算是一行(中间包含换行符也是如此),而用 m 之后,则 \nis 就中的 is 就会认为是新起一行的行首,因此输出为 is 。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-18 00:01 , Processed in 0.062946 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表