PHP正则表达式-修饰符
2015-10-01 23:35
555 查看
我们在PHP正则表达式的学习中会碰到修饰符,那么关于PHP正则表达式修饰符的理解以及使用我们需要注意什么呢?那么我们来具体的看看它的概念以及相关内容。在学习PHP正则表达式修饰符之前先来理解下贪婪模式,前面在元字符中提到过"?"还有一个重要的作用,即"贪婪模式",什么是"贪婪模式"呢?
PHP正则表达式贪婪模式:
比如我们要匹配以字母"a"开头字母"b"结尾的字符串,但是需要匹配的字符串在"a"后面含有很多个"b",比如"a bbbbbbbbbbbbbbbbb",那正则表达式是会匹配第一个"b"还是最后一个"b"呢?如果你使用了贪婪模式,那么会匹配到最后一个"b",反之只是匹配到第一个"b"。
PHP正则表达式贪婪模式使用实例:
对比不使用贪婪模式的实例如下:
PHP正则表达式修饰符的种类及介绍:
i :忽略大小写,设置i选项后,模式中的字母会进行大小写不敏感匹配,即"a"和"A" 是一样的。
m:多行匹配模式,m选项会更改^和$元字符的默认行为,分别与行的开头和结尾匹配,而不是与输入的字符串的开头和结尾匹配
s:单行模式,如果在修饰符中加入"s",那么默认的"."代表除了换行符以外的任何字符将会变成任意字符,也就是包括换行符!
x:如果加上该修饰符,正则表达式中的“空白字符”和“换行符”将会被忽略,除非它已经被转义,同时#号(#)被解释为注释的开头
U:和问号的作用差不多,用于设置"贪婪模式"。
示例代码
参考资料
http://www.360doc.com/content/10/0921/10/930254_55292179.shtml
PHP正则表达式贪婪模式:
比如我们要匹配以字母"a"开头字母"b"结尾的字符串,但是需要匹配的字符串在"a"后面含有很多个"b",比如"a bbbbbbbbbbbbbbbbb",那正则表达式是会匹配第一个"b"还是最后一个"b"呢?如果你使用了贪婪模式,那么会匹配到最后一个"b",反之只是匹配到第一个"b"。
PHP正则表达式贪婪模式使用实例:
/a.+?b/ /a.+b/U
对比不使用贪婪模式的实例如下:
/a.+b/
PHP正则表达式修饰符的种类及介绍:
i :忽略大小写,设置i选项后,模式中的字母会进行大小写不敏感匹配,即"a"和"A" 是一样的。
m:多行匹配模式,m选项会更改^和$元字符的默认行为,分别与行的开头和结尾匹配,而不是与输入的字符串的开头和结尾匹配
s:单行模式,如果在修饰符中加入"s",那么默认的"."代表除了换行符以外的任何字符将会变成任意字符,也就是包括换行符!
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
相关文章推荐
- php 钩子函数原理 解析
- symfony权威指南(2)之页面创建基础
- php获取ip地址所在的地理位置的实现
- php、nignx虚拟主机配置
- 【文件读写】PHP知识点总结-02
- php、nignx虚拟主机配置
- 搭建FTP服务
- 第二十天:php 与 mysql 的 基 本 配 置
- 服务器会自动加载index.php文件和一些自己的常用疑问
- PHP CLI模式下的多进程应用
- php三个文件的代码
- 十四、ContentProvider往通讯录添加联系人和获取联系人
- phpmyadmin高级功能尚未完全设置部分功能未激活
- declare aa char(5) := 'b'; begin dbms_output.put_line(aa || '00'); end;
- ThinkPHP控制器
- TP:C3BCA2F7
- php oop-1
- PHP 无限极分类
- laravel authorize(授权)
- import matplotlib出错