咱们在PHP正则表达式的学习中会碰到修饰符,那么关于PHP正则表达式修饰符的理解以及使用咱们须要注意什么呢?那么咱们来具体的看看它的概念以及相关内容。在学习PHP正则表达式修饰符以前先来理解下贪婪模式,前面在元字符中提到过"?"还有一个重要的做用,即"贪婪模式",什么是"贪婪模式"呢?php
PHP正则表达式贪婪模式:html
好比咱们要匹配以字母"a"开头字母"b"结尾的字符串,可是须要匹配的字符串在"a"后面含有不少个"b",好比"a bbbbbbbbbbbbbbbbb",那正则表达式是会匹配第一个"b"仍是最后一个"b"呢?若是你使用了贪婪模式,那么会匹配到最后一个"b",反之只是匹配到第一个"b"。正则表达式
PHP正则表达式贪婪模式使用实例:学习
/a.+?b/ /a.+b/U
对比不使用贪婪模式的实例以下:spa
/a.+b/
PHP正则表达式修饰符的种类及介绍:code
i :忽略大小写,设置i选项后,模式中的字母会进行大小写不敏感匹配,即"a"和"A" 是同样的。htm
m:多行匹配模式,m选项会更改^和$元字符的默认行为,分别与行的开头和结尾匹配,而不是与输入的字符串的开头和结尾匹配blog
s:单行模式,若是在修饰符中加入"s",那么默认的"."表明除了换行符之外的任何字符将会变成任意字符,也就是包括换行符!ip
x:若是加上该修饰符,正则表达式中的“空白字符”和“换行符”将会被忽略,除非它已经被转义,同时#号(#)被解释为注释的开头字符串
U:和问号的做用差很少,用于设置"贪婪模式"。
示例代码
<?php //非贪婪模式 $s = "abbb"; preg_match_all("/a.*b/",$s,$m); var_dump($m); //abbb //贪婪模式 //做为量词,表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性 $s = "abbb"; preg_match_all("/a.*?b/",$s,$m); var_dump($m); //ab $s = "abbb"; preg_match_all("/a.*b/U",$s,$m); var_dump($m); //ab //单行模式 $s = "Single line description"; preg_match_all("/^S/s",$s,$m); var_dump($m); //S //多行模式 $s = "First line\nSecond line"; preg_match_all("/^S/m",$s,$m); var_dump($m); //S $s = "First line Second line"; preg_match_all("/^S/m",$s,$m); var_dump($m); //S //忽略正则表达式中的“非转义的空白字符”和“回车换号符” $p = "abc #category code\n123 #item number"; $s = "abc123"; preg_match_all("/".$p."/x",$s,$m); var_dump($m); //abc123,至关于匹配abc123
参考资料
http://www.360doc.com/content/10/0921/10/930254_55292179.shtml