我们在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

PHP正则表达式-修饰符的更多相关文章

  1. js进阶正则表达式修饰符(i、g、m)(var reg2=/html/gi)

    js进阶正则表达式修饰符(i.g.m)(var reg2=/html/gi) 一.总结 1.正则表达式使用:通过那些支持正则表达式的字符串函数来使用(search.match.replace.spli ...

  2. PHP 正则表达式 修饰符

    下面列出了当前可用的 PCRE 修饰符.括号中提到的名字是 PCRE 内部这些修饰符的名称. 模式修饰符中的空格,换行符会被忽略,其他字符会导致错误. i (PCRE_CASELESS) 如果设置了这 ...

  3. PHP正则表达式修饰符的种类及介绍

    ◆i :如果在修饰符中加上"i",则正则将会取消大小写敏感性,即"a"和"A" 是一样的.◆m:默认的正则开始"^"和结 ...

  4. php正则表达式修饰符详解

    preg_match_all("/(.+)<\/form>/isU" , $string, $result); 这里/ 后面加了 3个修饰符 i 是 不区分大小写的匹配 ...

  5. 正则表达式修饰符 i、g、m、s、U、x、a、D、e 等。

    正则表达式中常用的模式修正符有i.g.m.s.U.x.a.D.e 等. 它们之间可以组合搭配使用. i 不区分(ignore)大小写: 例如: /abc/i 可以匹配 abc.aBC.Abc g 全局 ...

  6. python正则表达式--flag修饰符、match对象属性

    正则表达式—修饰符 正则表达式可以包含一些标志修饰符来控制匹配模式,用在正则表达式处理函数中的flag参数中,为可选参数. (1) re.I 全写(re.IGNORECASE) 表示使匹配时,忽略大小 ...

  7. python正则表达式(7)--flag修饰符、match对象属性

    正则表达式—修饰符 正则表达式可以包含一些标志修饰符来控制匹配模式,用在正则表达式处理函数中的flag参数中,为可选参数. (1) re.I 全写(re.IGNORECASE) 表示使匹配时,忽略大小 ...

  8. php基础32:正则匹配-修饰符

    <?php //正则表达式--修饰符一般放在//的外面 //1. i 表示不区分大小写 $model = "/php/"; $string = "php" ...

  9. php中的修饰符

    上面使用了一个修饰符U,详见关于修饰符的介绍. PHP正则表达式修饰符的理解: 在PHP正则表达式里面的修饰符可以改变正则的很多特性,使得正则表达式更加适合你的需要(注意:修饰符对于大小写是敏感的,这 ...

随机推荐

  1. apache启动失败,提示80端口被占用

    首先检查80端口被什么程序占用,方法:cmd进DOS,输入netstat -ano 80端口被为4的进程占用,有两种可能:一种情况是本机中安装了sqlserver 2008,80端口被SqlServe ...

  2. Redis哨兵、复制、集群的设计原理,以及区别

    广西SEO:谈到Redis服务器的高可用,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制. **哨兵(Sentinel):**可以管理多个Redis服务器,它提供了监控,提醒以及自 ...

  3. 基于rtmp的移动端推流解决方案

    因工作需要,及考虑成本因素,需要探索一套免费的移动端基于rtmp推流的直播解决方案,过程虽稍显曲折,但最终还是完成了目标.在这里将记录下来,以便日后查阅. 总体思路 移动端推流(RTMP) ---&g ...

  4. Python_面试题_更新中

    Python-面试题 线上操作系统 centos py2和py3的区别 每种数据类型,列举你了解的方法 3 or 9 and 8 字符串的反转 is 和 == 的区别? git流程 v = (1) / ...

  5. day30-client上传比较大的数据给server

    #在网络上面传输的数据叫数据包,数据包里面的数据叫报文,报文都有报头. #报头可以包含文件路径.文件大小.文件名称等等.#当数据比较长,一次性发送会报错,需要分多次发送.#client端上传数据到se ...

  6. 堆排Heap Sort

    1. #define LeftChild(i) (2*(i)+1) void PercDown(vector<int>&num, int i, int n) { int child ...

  7. 进程异常行为-反弹Shell攻击,KILL多个进程

    进程异常行为-反弹Shell攻击 父进程名称:bash 进程名称:bash 进程名称:/usr/bin/bash 进程id:23,077 命令行参数:sh -c /bin/bash -i >&a ...

  8. 实战_3:新建产品配置(product)并导出项目

    产品配置Product 产品配置用于定义和管理RCP应用的多个方面特征.并支持将RCP项目导出为部署包(类似eclipse压缩包),可以直接部署到其他环境上使用. 产品配置必须新建一个 扩展名为 .p ...

  9. 吴裕雄--天生自然 python开发学习:在Cenos 7 系统上安装配置python3.6.5

    安装相关依赖包. 在终端下输入命令:sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-deve ...

  10. php配置memcached的扩展。

    (一)安装memcached服务器 1根据系统下载相应版本的memcached服务器版本:如win7(64位=====>memcached-win64/memcached.exe 2.解压到目录 ...