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 相关文章推荐
Ajax PHP 边学边练 之三 数据库
Nov 26 PHP
php 获取百度的热词数据的代码
Feb 18 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
Oct 01 PHP
php下pdo的mysql事务处理用法实例
Dec 27 PHP
php中get_defined_constants函数用法实例分析
May 12 PHP
php视频拍照上传头像功能实现代码分享
Oct 08 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
thinkPHP模板算术运算相关函数用法分析
Jul 12 PHP
浅谈php中变量的数据类型判断函数
Mar 04 PHP
laravel 5.3中自定义加密服务的方案详解
May 09 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 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图片上传存储源码并且可以预览
2011/08/26 PHP
PHP设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
php array的学习笔记
2012/05/10 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
2012/10/24 PHP
PHP缓存集成库phpFastCache用法
2014/12/15 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
thinkphp5框架扩展redis类方法示例
2019/05/06 PHP
php中try catch捕获异常实例详解
2020/08/06 PHP
js 发个判断字符串是否为符合标准的函数
2009/04/27 Javascript
javascript的tab切换原理与效果实现方法
2015/01/10 Javascript
vuejs指令详解
2017/02/07 Javascript
详解用node编写自己的cli工具
2017/05/23 Javascript
基于vue.js快速搭建图书管理平台
2017/10/29 Javascript
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
vue实现点击按钮切换背景颜色的示例代码
2020/06/23 Javascript
vue或react项目生产环境去掉console.log的操作
2020/09/02 Javascript
iview实现动态表单和自定义验证时间段重叠
2021/01/10 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
python基础教程之udp端口扫描
2014/02/10 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
2017/06/20 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
python中实现数组和列表读取一列的方法
2018/04/03 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
在python中利用opencv简单做图片比对的方法
2019/01/24 Python
详解python 支持向量机(SVM)算法
2020/09/18 Python
英语专业个人求职自荐信
2013/09/21 职场文书
工作批评与自我批评范文
2014/10/16 职场文书
中学生逃课检讨书
2015/02/17 职场文书
寻衅滋事罪辩护词
2015/05/21 职场文书
交通事故代理词范文
2015/05/23 职场文书
2016年过年放假安排通知
2015/08/18 职场文书
网络研修心得体会
2016/01/08 职场文书
高质量“欢迎词”
2019/04/03 职场文书
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python