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 相关文章推荐
ubuntu10.04配置 nginx+php-fpm模式的详解
Jun 03 PHP
关于PHP自动判断字符集并转码的详解
Jun 26 PHP
php把session写入数据库示例
Feb 26 PHP
php遍历文件夹和文件列表示例分享
Mar 11 PHP
php之curl设置超时实例
Nov 03 PHP
编写PHP脚本过滤用户上传的图片
Jul 03 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
Aug 16 PHP
标准版Eclipse搭建PHP环境的详细步骤
Nov 18 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
Dec 22 PHP
php实现压缩合并js的方法【附demo源码下载】
Sep 22 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
Apr 18 PHP
PHP数组式访问接口ArrayAccess用法分析
Dec 28 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中文本数据翻页(留言本翻页)
2006/10/09 PHP
人尽可用的Windows技巧小贴士之下篇
2007/03/22 PHP
php利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
PHP操作XML作为数据库的类
2010/12/19 PHP
thinkphp多层MVC用法分析
2015/12/30 PHP
Cookie跨域问题解决方案代码示例
2020/11/24 PHP
Javascript 学习笔记 错误处理
2009/07/30 Javascript
有关于JS辅助函数inherit()的问题
2013/04/07 Javascript
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
jQuery-ui引入后Vs2008的无智能提示问题解决方法
2014/02/10 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
JS实现二叉查找树的建立以及一些遍历方法实现
2017/04/17 Javascript
原生js 封装get ,post, delete 请求的实例
2017/08/11 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
2018/12/11 Javascript
微信小程序实现多个按钮的颜色状态转换
2019/02/15 Javascript
详解wepy开发小程序踩过的坑(小结)
2019/05/22 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
Python决策树分类算法学习
2017/12/22 Python
python生成器,可迭代对象,迭代器区别和联系
2018/02/04 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
python按键按住不放持续响应的实例代码
2019/07/17 Python
基于python实现数组格式参数加密计算
2020/04/21 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
2020/05/07 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
2020/06/18 Python
Toppik顶丰增发纤维官网:解决头发稀疏
2017/12/30 全球购物
英国和爱尔兰的自炊式豪华度假小屋:Rural Retreats
2018/06/08 全球购物
Weblogic和WebSphere不同特点
2012/05/09 面试题
食品营养与检测应届生求职信
2013/11/08 职场文书
软件部经理岗位职责范本
2014/02/25 职场文书
三八妇女节演讲稿
2014/05/27 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
收入证明范本
2015/06/12 职场文书
2015年中学总务处工作总结
2015/07/22 职场文书
《海上日出》教学反思
2016/02/23 职场文书
详解前端任务构建利器Gulp.js使用指南
2021/04/30 Javascript
《艾尔登法环》发布最新「战技」宣传片
2022/04/03 其他游戏