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

编辑于:2021年12月18日
正则表达式的修正符: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() 使用,可以把匹配来的字符串当作正则表达式执行。

相关推荐