正则表达式

  正则表达式的作用

    分割、查找、匹配、替换字符串

分隔符:正斜线(/)、hash符号(#)、以及取反符号(~)

    通用原子:\d(代表十进制的0-9)、\D (取反除了0-9)、\w(数字、字母、下划线)

\W(除了数字字母下划线)、\s(空白符)、\S(除了空白符)

元字符:  .    *   ?   ^   $   +  {n}   {n,m}   []   ()   [^]    |   [-]

   . 点代表的意思是除了换行符的任意字符

*   代表匹配前面的内容出现0次或者多次

? 代表匹配前面的内容出现0次或者1次

^   代表匹配输入字符串的开始位置

   $   代表匹配输入字符串的结尾位置

   +   代表匹配前面的内容出现1次或者多次

   {n} n是一个非负整数,匹配确定的n次

   {n,m}  n和m均为非负整数,最少匹配n次最多匹配m次

   [ ]  定义匹配字符范围

   ()   标记一个子表达式的开始和结束位置

  [^]  取反   除了中括号里面的其他都匹配

   |     或者的意思

   [-]   代表的是一个范围  比如[ 0 - 9 ]

  

     模式修正符:i   m   e   s   U   x   A   D   u

      i       不区分大小写

     m     将字符串视为多行,不管是那行都能匹配

     e      配合函数preg_replace()使用    //PHP7.0已经取消

     s      修正点和换行

     U     只匹配最近的一个字符串,不重复匹配     取消贪婪模式

     x      将模式中的空白符忽略

     A      强制从目标字符串开头匹配

     D     使用$限制结尾字符,则不允许结尾有换行

     u      中文匹配

  

  后向引用:

$str = "<p>abc</p>";

$pattern = '/<p>(.*)<\/p>';

//将str字符串替换成不带p标签的
preg_replace( $pattern, '\\1',$str ); //反斜线1代表的意思就是第一个括号里面匹配到的内容

  贪婪模式

$str ="<p>abc</p><p>bcd</p>";

$pattern = '/<p>.*?<\/p>/';   // ?可以取消贪婪

preg_replace_all($pattern, '\\1',$str);

$pattern = '/<p>.*<\/p>/U';  //U也可以取消贪婪

  正则表达式PCRE函数:preg_match()  preg_match_all()   preg_replace()  preg_split()

  中文匹配:UTF-8汉字编码范围是0x4e00-0x9fa5   ANSI(gb2312)环境下 0xb0-0xf7 ,  0xa1-0xfe

  UTF-8要使用u模式修正符使模式字符串被当成UTF-8   ANSI(gb2312)环境下要使用chr将Ascii码转换为字符

  

$str = "中国你好";

$pattern = '/[\x{4e00}-\x{9fa5}]+/u';  //utf-8

$pattern = '/['.chr(0xb0).'-'.chr(0xf7)']['.chr(0xa1).'-'.chr(0xfe)']/';

preg_match($pattern ,$str ,$match);

var_dump($match);

PHP面试 PHP基础知识 六(正则表达式)的更多相关文章

  1. 【Java面试】基础知识篇

    [Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...

  2. python基础知识六 文件的基本操作+菜中菜

    基础知识六 文件操作 ​ open():打开 ​ file:文件的位置(路径) ​ mode:操作文件模式 ​ encoding:文件编码方式 ​ f :文件句柄 f = open("1.t ...

  3. Python基础知识(六)------小数据池,集合,深浅拷贝

    Python基础知识(六)------小数据池,集合,深浅拷贝 一丶小数据池 什么是小数据池: ​ 小数据池就是python中一种提高效率的方式,固定数据类型使用同一个内存地址 代码块 : ​ 一个文 ...

  4. C#基础知识之正则表达式

    正则表达式 是一种匹配输入文本的模式..Net 框架提供了允许这种匹配的正则表达式引擎.模式由一个或多个字符.运算符和结构组成. 实例 下面的实例匹配了以 'S' 开头的单词: using Syste ...

  5. 死磕面试 - Dubbo基础知识37问(必须掌握)

    作为一个JAVA工程师,出去项目拿20k薪资以上,dubbo绝对是面试必问的,即使你对dubbo在项目架构上的作用不了解,但dubbo的基础知识也必须掌握. 整理分享一些面试中常会被问到的dubbo基 ...

  6. PHP面试 PHP基础知识 十(网络协议)

    网络协议 HTTP协议状态码 状态分为五大类:1XX.2XX.3XX.4XX.5XX 1XX:信息类状态码  表示接受请求正在处理 2XX:success 成功状态码  请求正常处理完毕 3XX:重定 ...

  7. Go语言核心36讲(Go语言基础知识六)--学习笔记

    06 | 程序实体的那些事儿 (下) 在上一篇文章,我们一直都在围绕着可重名变量,也就是不同代码块中的重名变量,进行了讨论.还记得吗? 最后我强调,如果可重名变量的类型不同,那么就需要引起我们的特别关 ...

  8. java 基础知识八 正则表达式

    java  基础知识八  正则表达式 正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待 ...

  9. java 基础知识六 字符串1

    java  基础知识六  字符串1 String 不是java的基本数据类型 String 不是java的基本数据类型 String 不是java的基本数据类型 字符串是是一个字符序列 1.创建 创建 ...

随机推荐

  1. 阿里云Redis 配置

    查看路径whereis redis 1.修改配置文件 vim /etc/redis.conf 这三个配置是必须的 修改内容,把 daemonize no 修改为:daemonize yes requi ...

  2. python进阶:类和对象

    @修饰符:将被修饰的函数作为参数,运行修饰函数 实例方法: 静态方法:@staticmethod 类方法:@classmethod 自省:通过一定的机制查询到对象的内部结构 序列类: 列表推导式(例表 ...

  3. js上传图片到七牛云存储

    项目开发过程中遇到一个需求,运营人员需要上传图片到七牛云,最开始的做法是,后台对接七牛,然后出一个接口,前端调用接口,先将图片传到后台,然后后台再上传七牛云,用的过程中发现,图片小的情况下还好,图片一 ...

  4. javscript 实现iframe加载内容页出现LOADING效果

    <div id="load" align="center"> <img src="http://sc.cnwebshow.com/u ...

  5. shell变量相关知识

    环境变量和普通变量 一.几个常用命令: 1. set : 输出所有变量,包含全局变量和局部变量 2. env : 只显示全局变量 3. declare : 输出所有的变量,函数,整数和已经导出的变量 ...

  6. 二.通过jenkins对系统的监控(1)

    说明:通过jenkins定时请求系统,判断系统是否挂了. 注:windows环境 1.新建一个自由风格的项目. 2.构建触发器选择定时构建. 3.执行windows批处理命令 4.构建后操作,发邮件 ...

  7. django 里面的更新数据(update)

    https://blog.csdn.net/qq_42606051/article/details/81162189 https://blog.csdn.net/luojie140/article/d ...

  8. C#基本语法1 ----> 实例

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. ///////////////////////////////////////////////////////////////////// ...

  9. python+tushare获取上市公司财务报表:资产负债表

    接口:balancesheet 描述:获取上市公司资产负债表 积分:用户需要至少500积分才可以调取,具体请参阅本文最下方积分获取办法 注:tushare包下载和初始化教程,请查阅我之前的文章 提示: ...

  10. Arcpy里莫名其妙的字段类型(Field type)

    对比6个常用的字段数据类型在Arcpy字段创建与字段属性输出时奇怪的事情: 添加字段使用arcpy.AddField_management: # addfield 的 type参数 # 浮点型,Flo ...