正则表达式的修正符:i、g、m、s、x、e

正则表达式中常用的模式修正符有 igmsxe等。它们之间可以组合搭配使用。

它们的作用如下:

修正符:i

不区分大小写的匹,如: /abc/i 可以与 abcaBCABc 等匹配。

修正符:g

表示全局匹配

修正符:m

将字符串视为多行,不管是那行都能匹配。例,模式为:$mode="/abc/m"; ,要匹配的字符串为:$str="bcefg5e\nabcdfe"
注意其中 \n换行了, abc 换到了下一行,$str$mode 仍可以匹配,修正符 m 使得多行也可匹配。

修正符:s

将字符串视为单行,换行符作为普通字符。例:模式为: $mode="/pr.y/",要匹配字符串为: $str="pr\ny",两者不可匹配。. 是除了换行以外的字符可匹配。

修改下模式为:$mode="/pr.y/s",其中修正符 s\n 视为普通字符,即不是换行,最后两者可以匹配。

修正符:x

将模式中的空白忽略。

修正符:A

强制从目标字符串开头匹配,例: $mode="/abc/A",可以与 $str="abcsdfi" 匹配,不可以与 $str2="sdsdabc" 匹配,因为 $str2 不是以 abc 开头。

修正符:D

如果使用 $ 限制结尾字符,则不允许结尾有换行。例,模式为:$mode="/abc$/",可以与最后有换行的 $str="adshabc\n" 匹配,元子符 $ 会忽略最后的换行 \n

如果模式为:$mode="/abc/D",则不能与 $str="adshabc\n" 匹配,修正符:D 限制其不可有换行,必需以 abc 结尾。

修正符:U

只匹配最近的一个字符串,不重复匹配。

如模式为:

$mode="/a.*c/";
$str="abcabbbcabbbbbc" ;
preg_match($mode,$str,$content);
echo $content[0]; //输出:abcabbbcabbbbbc;

如果 $mode="/a.*c/",变成$mode="/a.*c/U",则只匹配最近一个字符串,输出 abc

修正符:e

配合函数 preg_replace() 使用,可以把匹配来的字符串当作正则表达式执行。

相关推荐

书写高效的正则表达式,正则表达式性能优化方法

书写高效的正则表达式,正则表达式性能优化方法

影响 NFA 类正则表达式(常见语言:GNU Emacs,Java,ergp,less,more,.NET语言,PCRE library,Perl,PHP,Python,Ruby,sed,vi ) 其实主要是它的“回溯”,减少“回溯”次数(减少循环查找同一个字符次数),是提高性能的主要方法。 演示 示例 源字符串: 匹配要求:匹配 标签里面所有内容,包括改标签 方法 1 因为 (测试工具使用了: ...

正则表达式匹配原理与解析过程探讨分析

正则表达式匹配原理与解析过程探讨分析

已经有多篇关于正则表达式介绍的文章,随着我们越来越多使用正则表达式,想对性能做优化、减少我们正则表达式书写匹配 Bug。我们不得不进一步深入了解正则表达式执行过程了。下面我们一起学习,分析下正则表达式执行过程。 我们会用 regexbuddy 测试工具分解执行过程,具体工具使用,可以看:正则表达式性能测试工具推荐、 ...

正则表达式中需要转义的特殊字符

正则表达式中需要转义的特殊字符

如果要查找文件名中有*的文件,则需要对*进行转义,即在其前加一个\。ls \*.txt。正则表达式有以下特殊字符。 $ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n' 或 ‘\r'。要匹配 $ 字符本身,请使用 \$。 ( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要 ...

微信扫一扫,分享到朋友圈

正则表达式的修正符:i、g、m、s、x、e