php正则修正符用法实例详解


Posted in PHP onDecember 29, 2016

本文实例讲述了php正则修正符用法。分享给大家供大家参考,具体如下:

<?php
   //标记在整个模式之外;
   // 例://$mode="/\bis\b/U",其中U在外面;
  //修正符:i 不区分大小写的匹配;
     //如:"/abc/i"可以与abc或aBC或ABc等匹配;
  //修正符:m 将字符串视为多行,不管是那行都能匹配;
  //  例://模式为:$mode="/abc/m";
     //要匹配的字符串为:$str="bcefg5e\nabcdfe"
     //注意其中\n,换行了;abc换到了下一行;
     //$str和$mode仍可以匹配,修正符m使得多行也可匹配;
  //修正符:s 将字符串视为单行,换行符作为普通字符;
   // 例://模式为:$mode="/pr.y/";
      //要匹配字符串为:$str="pr\ny";
      //两者不可匹配; . 是除了换行以外的字符可匹配;
      //修改下模式为:$mode="/pr.y/s";
        //其中修正符s将\n视为普通字符,即不是换行;
      //最后两者可以匹配;
  //修正符:x 将模式中的空白忽略;
  //修正符:A 强制从目标字符串开头匹配;
   // 例://$mode="/abc/A";
      //可以与$str="abcsdfi"匹配,
      //不可以与$str2="sdsdabc"匹配;
      //因为$str2不是以abc开头;
  //修正符:D 如果使用$限制结尾字符,则不允许结尾有换行;
  //  例://模式为:$mode="/abc$/";
      //可以与最后有换行的$str="adshabc\n"匹配;
      //元子符$会忽略最后的换行\n;
      //如果模式为:$mode="/abc/D",
      //则不能与$str="adshabc\n"匹配,
      //修正符D限制其不可有换行;必需以abc结尾;
  //修正符:U 只匹配最近的一个字符串;不重复匹配;
  //  例:
  //   如模式为:
      $mode="/a.*c/";
      $str="abcabbbcabbbbbc" ;
      preg_match($mode,$str,$content);
      echo $content[0]; //输出:abcabbbcabbbbbc;
      //如果$mode="/a.*c/";变成$mode="/a.*c/U";
      // 则只匹配最近一个字符串,输出:abc;
//修正符:e 配合函数preg_replace()使用,
//      可以把匹配来的字符串当作正则表达式执行;
?>

修正符:

POSIX兼容正则没有修正符。

PERL兼容正则中可能使用的修正符(修正符中的空格和换行被忽略,其它字符会导致错误):

i (PCRE_CASELESS):
匹配时忽略大小写。

m (PCRE_MULTILINE):
当 设定了此修正符,行起始(^)和行结束($)除了匹配整个字符串开头和结束外,还分别匹配其中的换行符(\n)的之后和之前。

s (PCRE_DOTALL):
如 果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。

x (PCRE_EXTENDED):
如 果设定了此修正符,模式中的空白字符除了被转义的或在字符类中的以外完全被忽略。

e
如果设 定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串。 只有 preg_replace() 使用此修正符,其它 PCRE 函数将忽略之。

A (PCRE_ANCHORED):
如 果设定了此修正符,模式被强制为“anchored”,即强制仅从目标字符串的开头开始匹配。

D (PCRE_DOLLAR_ENDONLY):
如 果设定了此修正符,模式中的行结束($)仅匹配目标字符串的结尾。没有此选项时,如果最后一个字符是换行符的话,也会被匹配在里面。如果设定了 m 修正符则忽略此选项。

S
当一个模式将被使用若干次时,为加速匹配起见值得先对其进行分析。 如果设定了此修正符则会进行额外的分析。目前,分析一个模式仅对没有单一固定起始字符的 non-anchored 模式有用。

U (PCRE_UNGREEDY):
使 “?”的默认匹配成为贪婪状态的。

X (PCRE_EXTRA):
模式中的任何反斜线后面跟上 一个没有特殊意义的字母导致一个错误,从而保留此组合以备将来扩充。默认情况下,一个反斜线后面跟一个没有特殊意义的字母被当成该字母本身。

u (PCRE_UTF8):
模 式字符串被当成UTF-8。

注意:

     模式修正符(Pattern Modifiers)

    -可同时匹配大小写字母
    -将字符串视为多行
    -将字符串视为单行,换行符做普通字符看待,使“.”匹配任何字符
X     -模式中的空白忽略不计
    -匹配到最近的字符串
e     -将替换的字符串作为表达使用

PHP 相关文章推荐
WINDOWS 2000下使用ISAPI方式安装PHP
Sep 05 PHP
PHP 增加了对 .ZIP 文件的读取功能
Oct 09 PHP
木翼下载系统中说明的PHP安全配置方法
Jun 16 PHP
Windows7下PHP开发环境安装配置图文方法
May 20 PHP
php XMLWriter类的简单示例代码(RSS输出)
Sep 30 PHP
php向js函数传参的几种方法
Aug 10 PHP
php的sso单点登录实现方法
Jan 08 PHP
php封装的smartyBC类完整实例
Oct 19 PHP
超强多功能php绿色集成环境详解
Jan 25 PHP
php中的异常和错误浅析
May 03 PHP
php实现的顺序线性表示例
May 04 PHP
PHP大文件分割分片上传实现代码
Dec 09 PHP
PHP登录(ajax提交数据和后台校验)实例分享
Dec 29 #PHP
php preg_match的匹配不同国家语言实例
Dec 29 #PHP
php使用正则表达式获取字符串中的URL
Dec 29 #PHP
php实现水印文字和缩略图的方法示例
Dec 29 #PHP
PHPMailer发送邮件
Dec 28 #PHP
PHP实现简单ajax Loading加载功能示例
Dec 28 #PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
Dec 28 #PHP
You might like
php源代码安装常见错误与解决办法分享
2013/05/28 PHP
PHP中ini_set和ini_get函数的用法小结
2014/02/18 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
2018/06/04 PHP
JS 动态获取节点代码innerHTML分析 [IE,FF]
2009/11/30 Javascript
基于jquery用于查询操作的实现代码
2010/05/10 Javascript
用jQuery模拟页面加载进度条的实现代码
2011/12/19 Javascript
javascript 判断中文字符长度的函数代码
2012/08/27 Javascript
HTML复选框和单选框 checkbox和radio事件介绍
2012/12/12 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
JS判断移动端访问设备并加载对应CSS样式
2014/06/13 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
2016/06/14 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
2016/07/04 Javascript
JS中script标签defer和async属性的区别详解
2016/08/12 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
如何使用JS在HTML中自定义字符串格式化
2017/07/20 Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
[27:08]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第二场 11.21
2020/11/23 DOTA
Python 依赖库太多了该如何管理
2019/11/08 Python
PyQt使用QPropertyAnimation开发简单动画
2020/04/02 Python
keras slice layer 层实现方式
2020/06/11 Python
python实现图片素描效果
2020/09/26 Python
Python Charles抓包配置实现流程图解
2020/09/29 Python
纯css3实现照片墙效果
2014/12/26 HTML / CSS
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
中药专业大学生医药工作求职信
2013/10/25 职场文书
认识深刻的检讨书
2014/02/16 职场文书
市场营销大学生职业规划书
2014/02/25 职场文书
幼儿园中班教师个人总结
2015/02/05 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
销售开票员岗位职责
2015/04/15 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs
星际争霸:毕姥爷vs解冻03
2022/04/01 星际争霸
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL