1.i (PCRE_CASELESS) :如果设置了这个修饰符,模式中的字母会进行大小写不敏感匹配。

/**
*result:
Array
(
)
*/
$str = 'AbbbEEs';
$matches = array();
preg_match('/eE/', $str, $matches);
print_r($matches);

/**
*result:
Array
(
  [0] => EE
)
*/
$str = 'AbbbEEs';
$matches = array();
preg_match('/ee/i', $str, $matches);
print_r($matches);

2.m (PCRE_MULTILINE):默认情况下,PCRE认为目标字符串是由单行字符组成的(然而实际上他可能由多行),“行首”元字符(^)进匹配字符串的开始位置,而“行末”元字符($)仅匹配字符串末尾,或者最后的换行符(除非设置D修饰符)。这个行为和perl相同。当这个修饰符设置以后,“行首”和“行末”就会匹配目标字符串中任意换行符之后或者之前,还分别匹配目标字符串的最开始和最末尾位置。这等同于perl的/m修饰符。如果目标字符串中没有\n字符,或者模式中没有出现^或$,设置这个修饰符不产生任何影响。

$str = '<p>paragraph1</p>
<p>paragraph2</p>
<p>paragraph3</p>
';
$matches = array();
preg_match_all('/^<p>.*?<\/p>\r$/m', $str, $matches);//在windows系统中要加\r,因为敲回车输入的是\r\n, 在linux下测试去掉\r
print_r($matches);

/**

*结果输出:

Array

(
[0] => Array
(
[0] => <p>paragraph1</p>
[1] => <p>paragraph2</p>
[2] => <p>paragraph3</p>
)
)

*/

3.D(PCRE_DOLLAR_ENDONLY):如果设置这个修饰符,模式中的元字符美元符号($)仅仅匹配字符串的末尾。如果没有设置这个修饰符,当字符串以一个换行符结尾时,美元符号($)还会匹配该换行符(但不会匹配之前的任何换行符). 如果设置了修饰符m, D修饰符不起作用。在perl中没有与此修饰符相同效果的修饰符。

/**
*********在windows系统中要加\r,因为敲回车输入的是\r\n, 在linux下测试请去掉\r**********
*/

/**
**未设置修饰符D时, $会匹配字符串末尾的换行符
*retult:
Array
(
  [0] => <p>paragraph3</p>
)
*/
$str = '<p>paragraph3</p>
';
$match = array();
preg_match('/<p>.*?<\/p>\r$/', $str, $matches);
print_r($matches);

/**
**设置修饰符D时, $不会匹配字符串末尾的换行符
*retult:
Array
(
)
*/
$str = '<p>paragraph3</p>
';
$match = array();
preg_match('/<p>.*?<\/p>\r$/D', $str, $matches);
print_r($matches);

/**

**设置修饰符D时, $不会匹配字符串末尾的换行符, 需要指明换行符
*retult:
Array
(
    [0] => <p>paragraph3</p>

)
*/
$str = '<p>paragraph3</p>
';
$match = array();
preg_match('/<p>.*?<\/p>\r\n$/D', $str, $matches);
print_r($matches);

4.s(PCRE_DOTALL):默认情况下元字符(.)是匹配除换行符(\n)的所有字符,当设置了这个修饰符后,元字符(.)匹配包括换行符的所有字符。

/**
*不设置s时,不能匹配换行符
*result:
Array
(
    [0] => sfs
)
*/
$str = 'sfsdf
sfdsa';
$matches = array();
preg_match('/sf.*s/', $str, $matches);
print_r($matches);

/**
*设置s后,能匹配换行符
*result:
Array
(
    [0] => sfsdf
sfds
)
*/
$str = 'sfsdf
sfdsa';
$matches = array();
preg_match('/sf.*s/s', $str, $matches);
print_r($matches);

5.U(PCRE_UNGREEDY):这个修饰符扭转了量词的贪婪模式,使量词默认为费贪婪的。通过在量词后紧跟?可以使其成为非贪婪的。

/**
*量词*默认为贪婪模式
*result:
Array
(
    [0] => <p>paragraph1</p><p>paragraph2</p><p>paragraph3</p>
)
*/
$str = '<p>paragraph1</p><p>paragraph2</p><p>paragraph3</p>';
$matches = array();
preg_match('/<p>.*<\/p>/', $str, $matches);
print_r($matches);

/**
*修饰符U扭转量词的贪婪模式
*result:
Array
(
    [0] => <p>paragraph1</p>
)
*/
$str = '<p>paragraph1</p><p>paragraph2</p><p>paragraph3</p>';
$matches = array();
preg_match('/<p>.*<\/p>/U', $str, $matches);
print_r($matches);

/**
*量词后紧跟?变为非贪婪模式
*result:
Array
(
    [0] => <p>paragraph1</p>
)
*/
$str = '<p>paragraph1</p><p>paragraph2</p><p>paragraph3</p>';
$matches = array();
preg_match('/<p>.*?<\/p>/', $str, $matches);
print_r($matches);

6.e(PCRE_REPLACE_EVAL):如果设置了这个修饰符,preg_replace在进行了对替换字符串的 后向引用替换之后, 将替换后的字符串作为php代码评估之行(eval函数方式), 并使用之行结果 作为实际参与替换的字符串. 单引号, 双引号, 反斜线(\)和NULL字符在 后向引用替换时会被用反斜线转义.

/**
*result:
ggggggggggoooo
*/
$str = 'goooo';
echo preg_replace('/(g)/e', 'str_repeat(\\1, 10)', $str);

7.S:当一个模式需要多次使用的时候, 为了得到匹配速度的提升, 值得花费一些时间 对其进行一些额外的分析. 如果设置了这个修饰符, 这个额外的分析就会执行. 当前, 这种对一个模式的分析仅仅适用于非锚定模式的匹配(即没有单独的固定开始字符).

8.A(PCRE_ANCHORED):如果设置了这个修饰符, 模式被强制为"锚定"模式, 也就是说约束匹配使其仅从 目标字符串的开始位置搜索. 这个效果同样可以使用适当的模式构造出来, 并且 这也是perl种实现这种模式的唯一途径.

9. x (PCRE_EXTENDED):如果设置了这个修饰符, 模式中的没有经过转义的或不在字符类中的空白数据字符总会被忽略, 并且位于一个未转义的字符类外部的#字符和下一个换行符之间的字符也被忽略. 这个修饰符 等同于perl中的/x修饰符, 使被编译模式中可以包含注释. 注意: 这仅用于数据字符. 空白字符 还是不能在模式的特殊字符序列中出现, 比如序列(?(引入了一个条件子组(译注: 这种语法定义的 特殊字符序列中如果出现空白字符会导致编译错误. 比如( ?(就会导致错误.).

10.X (PCRE_EXTRA):这个修饰符打开了PCRE与perl不兼容的附件功能. 模式中的任意反斜线后就ingen一个 没有特殊含义的字符都会导致一个错误, 以此保留这些字符以保证向后兼容性. 默认 情况下, 在perl中, 反斜线紧跟一个没有特殊含义的字符被认为是该字符的原文. 当前没有其他特性由这个修饰符控制.

转载于:https://www.cnblogs.com/caoyuhan/archive/2012/09/26/2701304.html

PHP正则表达式学习(一) 模式修正符相关推荐

  1. 正则表达式教程之模式修正符

    之前我们给大家介绍了正则表达式中的定界符.原子和元字符,那么我们关于正则表达式教程的基本语法就剩下了正则表达式中的模式修正符.本节会向大家介绍模式修正符的概念.模式修正符的构成,以及结合实例的模式修正 ...

  2. php正则表达式修正符,深入解析PHP正则模式修正符

    今天我们就向大家具体讲解了PHP正则模式修正符的相关概念,希望对大家有所帮助. 模式修正符:模式修正符是标记在整个模式之外的.模式修正符中有几个常用的,分别是I.m.s.U,下面我们来具体了解一下. ...

  3. 正则表达式模式修正符

    模式修正符 模式修正符 -- 解说正则表达式模式中使用的修正符 说明 下面列出了当前在 PCRE 中可能使用的修正符.括号中是这些修正符的内部 PCRE 名.修正符中的空格和换行被忽略,其它字符会导致 ...

  4. 正则表达式中模式修正符作用详解(i、g、m、s、x、e)

    正则表达式中常用的模式修正符有i.g.m.s.x.e等.它们之间可以组合搭配使用. 它们的作用如下: //修正符:i 不区分大小写的匹配; //如:"/abc/i"可以与abc或a ...

  5. php 正则表达式 ies,正则表达式模式修正符(/ies)

    正则表达式模式修正符(/ies) 围观1955次 更新日期:2017-06-25 00:03:34 模式修正符 模式修正符 -- 解说正则表达式模式中使用的修正符 说明 下面列出了当前在 PCRE 中 ...

  6. 正则表达式学习笔记006--转义符的认识与应用

    正则表达式学习笔记006--转义符的认识与应用 交流群1:251572072 交流群2:170933152 也可以自己下载: 正则表达式学习笔记006--转义符的认识与应用 http://credre ...

  7. php 模式修正符e,模式修正符 - PHP 5 中文文档

    i (PCRE_CASELESS) 如果设定此修正符,模式中的字符将同时匹配大小写字母. m (PCRE_MULTILINE) 默认情况下,PCRE 将目标字符串作为单一的一"行" ...

  8. php正则匹配教程,PHP正则表达式学习(附录视频教程)

    PHP正则表达式主要用于字符串的模式分割.匹配.查找及替换操作.使用正则表达式在某些简单的环境下可能效率不高,因此如何更好的使用PHP正则表达式需要综合考虑 我的PHP正则入门,是起源于网上的一篇文章 ...

  9. 细说php2[正则表达式学习笔记]

    <细说php>这本书应该是每个php程序员入门的必读书籍,里面讲的很多知识都很系统和详细,看了正则这部分,并练习了里面的案例,发现自己已经会了很多.... header('Content- ...

最新文章

  1. Unity3D研究院之与Android相互传递消息
  2. 简单Android手机APP地图,android最简单手机地图APP(只需5分钟)
  3. 023_JavaScript数字方法
  4. python 左旋转字符串
  5. 2017-10-17 开源非英文关键词编程语言
  6. JavaWeb(十七)——JSP中的九个内置对象
  7. Android学习拾遗
  8. 云中漫步 - 3:2013-4-27 微软云体验营北京站
  9. 新手入门HTML5开发,你必须先搞懂这6个问题
  10. 正则表达式学习笔记009--大括号与选择符的认识与应用
  11. django模板-通过a标签生成链接并跳转
  12. Ubuntu下安装并配置VS Code编译C++
  13. Audio之音频帧周期(四十三)
  14. mysql去掉两个最高分_Excel函数 去掉最高分和最低分取平均值?这个函数不可不知...
  15. css3图片倾斜3d动画效果
  16. Python爬虫入门教程 7-100 蜂鸟网图片爬取之二
  17. java 私有云_[原创]私有云中实现以应用程序为中心的PaaS
  18. Ubuntu18.04/20.04 上微信中文显示为方块状乱码的解决方案( Deepin-Wechat )
  19. AIoT系列:AI赋能物联网,探索AIoT发展新趋势
  20. 阿里巴巴-数据平台事业部-数据产品部:寻找真爱

热门文章

  1. python threading模块中的timer_threading中定时器Timer方法
  2. ubuntu16.04 gcc降级到4.8
  3. css3 如何动态画一条直线_素描基础学习课:素描长直线的画法!把直线画直的关键!...
  4. 华为交换机配置syslog发送_配置华为交换机把日志发送到远程centos syslog服务器上...
  5. python中o_Python O
  6. 两个服务器之间怎么传输大量数据速度快 java socket_千兆网络的传输速度能超过125MB/s么?...
  7. 连接器与加载器pdf_pdf转换为excel,你不会,同事点点鼠标2分钟就搞定了
  8. 2017.3.30 时态同步 失败总结
  9. 鸿蒙系统联合,跨界联合 华为鸿蒙系统赋能厨电业
  10. 【英语学习】【WOTD】regale 释义/词源/示例