我们在PHP正则表达式的学习中会碰到修饰符,那么关于PHP正则表达式修饰符的理解以及使用我们需要注意什么呢?那么我们来具体的看看它的概念以及相关内容。在学习PHP正则表达式修饰符之前先来理解下贪婪模式,前面在元字符中提到过"?"还有一个重要的作用,即"贪婪模式",什么是"贪婪模式"呢?

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

最新文章

  1. Android之TabActivity的使用
  2. Maven安装配置使用
  3. AJAX怎么用POST 传参数
  4. JetBrains发布了IntelliJ IDEA 2016.1
  5. iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(一)
  6. tp三大自动
  7. Java 8新特性之集合
  8. OC Protocol----协议
  9. linux系统环境变量.bash_profile/bashrc文件
  10. .Net 笔记(二) 泛型和集合
  11. iOS 关于开发者证书:此证书的签发者无效的解决方案
  12. 使用jsonEditor打造一个复杂json编辑器
  13. [Machine Learning (Andrew NG courses)]IV.Linear Regression with Multiple Variables
  14. BZOJ 2096([Poi2010]Pilots-单调队列-差值)
  15. rest服务器
  16. 在ubuntu 上创建 ssl 证书
  17. Android 网格视图GridView的使用
  18. ubuntu操作系统以及开发环境的安装
  19. jquery系列教程1-选择器全解
  20. AWT的应用

热门文章

  1. Adaboost算法及其代码实现
  2. Activity组件(三):通过对象实现信息添加及展示
  3. 001-rabbitmq和haproxy结合
  4. 菜鸟cmake使用
  5. VMware 三种网络配置解释
  6. Linux_实验1 Red Hat的使用
  7. python数据类型:Number数字
  8. dim|lobby|trifle|
  9. [LC] 79. Word Search
  10. mongo的基本命令操作