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 相关文章推荐
php实现mysql同步的实现方法
Oct 21 PHP
PHP获取用户的浏览器与操作系统信息的代码
Sep 04 PHP
ThinkPHP Mobile使用方法简明教程
Jun 18 PHP
php中使用base HTTP验证的方法
Apr 20 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
Dec 17 PHP
ThinkPHP实现图片上传操作的方法详解
May 08 PHP
php格式文件打开的四种方法
Feb 24 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
May 11 PHP
golang实现php里的serialize()和unserialize()序列和反序列方法详解
Oct 30 PHP
php xhprof使用实例详解
Apr 15 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
Apr 07 PHP
php操作redis常见方法示例【key与value操作】
Apr 14 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实现ODBC数据分页显示一例
2006/10/09 PHP
php绘图中显示不出图片的原因及解决
2014/03/05 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
2014/05/10 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
2019/10/02 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
一行代码实现纯数据json对象的深度克隆实现思路
2013/01/09 Javascript
jquery 提交值不为空的元素示例代码
2013/05/10 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
浅谈JavaScript函数参数的可修改性问题
2013/12/05 Javascript
JS正则表达式验证中文字符
2017/05/08 Javascript
详解Vue.use自定义自己的全局组件
2017/06/14 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
ES6新特性:使用export和import实现模块化详解
2017/07/31 Javascript
jquery实现楼层滚动效果
2018/01/01 jQuery
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
jQuery扩展方法实现Form表单与Json互相转换的实例代码
2018/09/05 jQuery
基于vue-upload-component封装一个图片上传组件的示例
2018/10/16 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
关于微信小程序登录的那些事
2019/01/08 Javascript
vue组件间通信六种方式(总结篇)
2019/05/15 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
JQuery绑定事件四种实现方法解析
2020/12/02 jQuery
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
python实现马耳可夫链算法实例分析
2015/05/20 Python
Spartoo瑞典:鞋子、包包和衣服
2018/09/15 全球购物
如何使用PHP session
2015/04/21 面试题
《陋室铭》教学反思
2014/02/26 职场文书
团委竞选演讲稿
2014/04/24 职场文书
小学运动会演讲稿
2014/08/25 职场文书
2014年培训工作总结范文
2014/11/27 职场文书
伏羲庙导游词
2015/02/09 职场文书
学生不参加考试检讨书
2015/02/19 职场文书
Nginx配置https原理及实现过程详解
2021/03/31 Servers
css背景和边框标签实例详解
2021/05/21 HTML / CSS