正则表达式

  正则表达式的作用

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

分隔符:正斜线(/)、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. 31. Git与Github

    Github介绍 GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub. GitHub于2008年4月10日正式上线,除了Git代码仓库 ...

  2. JavaScript中如何让图形旋转不会相互影响

    最近在联系JavaScript 二维绘图,经常会用到旋转,前几篇博文也提到过这类问题. 但是我忘记了JavaScript二维绘图中有关旋转最核心的两个方法:save()和restore() 在w3c上 ...

  3. MySQL总结01

    window删除MySQL服务 cmd下执行 sc delete MySQL 登陆登出 登陆: mysql -uroot -ppasswd -h host 退出登陆 mysqladmin -uroot ...

  4. php &引用符的注意情况

  5. js事件处理程序详解,html事件处理程序,dom0级事件处理程序,dom2级事件处理程序

    博客搬迁,给你带来的不便,敬请谅解! http://www.suanliutudousi.com/2017/11/24/js%e4%ba%8b%e4%bb%b6%e5%a4%84%e7%90%86%e ...

  6. 分布式-技术专区-Redis分布式锁原理实现

    在很多场景中,我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务.分布式锁等.那具体什么是分布式锁,分布式锁应用在哪些业务场景.如何来实现分布式锁呢?今天来探讨分布式锁这个话题. ...

  7. C语言中各种进制的表示

    #include<stdio.h> int main() { //默认情况下是十进制 ; // 二进制(0b或者0B开头) int number2 = 0b1100; //八进制(0开头) ...

  8. spring纯注解的account案例

    dao层: package cn.mepu.dao.imp; import cn.mepu.dao.IAccountDao; import cn.mepu.domain.Account; import ...

  9. react 16.3+ 新生命周期

    react 16.3版本出现了两个新的生命周期函数,并将逐渐废弃componentWillMount().componentWillReceiveProps().componentWillUpdate ...

  10. Alpha版本后的心得体会

    Alpha版本后的心得体会 在我们一系列的努力之下,我们团队打造的校园互助式快递代取APP——U-Help的α版本终于能够问世了.尽管这个版本存在着这样那样的问题,但是我们还是对此抱有充足的信心.另一 ...