正则表达式的作用

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

正则表达式的组成部分

分隔符

"/""#""~"

通用原子

  • \d : 十进制的0-9
  • \D : 对\d取反:除了0-9
  • \w : 数字、字母、下画线
  • \W : 除了数字、字母、下画线
  • \s : 空格、换行符、换页符、回车符、字表符
  • \S : 除了空格、换行符、换页符、回车符、字表符

常用原子符

  • . : 除了换行符之外的任意字符
  • * : 匹配前面内容出现0次、1次或多次
  • ? : 匹配前面内容出现0次或1次
  • ^ : 开头
  • dollar符 : 结尾
  • + : 匹配前面内容出现1次或多次
  • {n} : 出现n次
  • {n,} :出现大于等于n次
  • {n,m} : 出现大于等于n次 小于等于m次
  • [] : 集合,匹配中括号里面的[abc]则是匹配a 或 b 或 c
  • () : 后向引用或当作整体
  • [^] : 取反[^abc]除了a 、除了b、 除了c
  • | : 或者
  • [-] : 表示范围

模式修正符

  • i : 不区分大小写
  • m : 多文本模式
  • s : 单行模式
  • U : 取消贪婪模式
  • x : 忽略模式中的空白符
  • A : 必须以该模式开头
  • D : 如果这个修饰符被设置, 模式中的元字符美元符号仅仅匹配目标字符串的末尾. 如果这个修饰符 没有设置, 当字符串以一个换行符结尾时, 美元符号还会匹配该换行符(但不会匹配之前的任何换行符). 如果设置了修饰符m, 这个修饰符被忽略
  • u : 进行utf-8匹配

后向引用

$str = '<b>abc</b>';
$pattern = '/<b>(.*)<\/b>/';
preg_replace($pattern,'\\1',$str);//这里\1代表的就是括号里匹配上的内容,也就是abc

贪婪模式

$str = '<b>abc</b><b>bcd</b>';//匹配每一不b标签
$pattern = '/<b>(.*?)<\/b>/';//.*存在贪婪模式,会一直匹配到最后,加上问号后 取消贪婪模式,匹配一个之后再进行下一个匹配
preg_replace($pattern,'\\1',$str); //使用以下方法也可以取消贪婪模式
$pattern = '/<b>(.*)<\/b>/U';

正则表达式PCRE函数

  • preg_filter — 执行一个正则表达式搜索和替换
  • preg_grep — 返回匹配模式的数组条目
  • preg_last_error — 返回最后一个PCRE正则执行产生的错误代码
  • preg_match_all — 执行一个全局正则表达式匹配
  • preg_match — 执行匹配正则表达式
  • preg_quote — 转义正则表达式字符
  • preg_replace_callback_array — Perform a regular expression search and replace using callbacks
  • preg_replace_callback — 执行一个正则表达式搜索并且使用一个回调进行替换
  • preg_replace — 执行一个正则表达式的搜索和替换
  • preg_split — 通过一个正则表达式分隔字符串

例子

写出一个正则表达式,取出页面中所有img标签中的src值

$str = '<img alt="xxx" src="aaa.jpg" />';
$pattern = '/<img.*?src=["\'].*?["\'].*?\/?>/';
/**
* 分析
* img的标签特性:有<img开头,中间可能有其他属性:所以有<img.*?
* src标签:src=["\'].*?["\'] 可能是以单引号或双引号
* 后面可能还有别的属性:.*?
* 以/> 或 >结尾: /?>
* 最终拼接成:<img.*?src=["\'].*?["\'].*?\/?>
**/

PHP正则表达式考察点的更多相关文章

  1. php基础知识考察点:正则表达式

    1.正则表达式的作用:分割,查找,匹配,替换 字符串 2.分隔符:正斜线(/),hash符(#)以及取反符号(~). 3.通用原子:\d \D \s \S \w \W 4.原子符 5. 模式修正符 6 ...

  2. PHP面试(一):PHP基础知识考察点、网页考察点、Linux考察点、MySQL考察点

    一.基础知识考察 1.引用变量的概念及定义方式——引用变量的原理 2.常量及数据类型——字符串的三种定义方法及各自的区别 3.运算符的使用——错误控制符.运算符优先级 4.流程控制操作 5.自定义函数 ...

  3. 【Java面试宝典】正则表达式

    文章目录 正则表达式-语法 Pattern.compile方法 ● 请你谈谈Java中是如何支持正则表达式操作的? 考察点:正则表达式 参考回答: Java中的String类提供了支持正则表达式操作的 ...

  4. php面试专题---21、MVC框架基本工作原理考察点

    php面试专题---21.MVC框架基本工作原理考察点 一.总结 一句话总结: 会的东西快速过,不要浪费时间,生命有限,都是一些很简单的东西. 1.mvc框架单一入口的 优势 是什么? 可以进行统一的 ...

  5. (一)PHP基础知识考察点

    1,PHP引用变量的考察点: 概念:引用就是用不同的名字访问同一个变量内容. 定义方式: 使用&符号. PHP引用变量的工作原理 这里有个COW  copy on write  用zval() ...

  6. JS正则表达式常用总结

    正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...

  7. Python高手之路【五】python基础之正则表达式

    下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...

  8. C# 正则表达式大全

    文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...

  9. C#基础篇 - 正则表达式入门

    1.基本概念 正则表达式(Regular Expression)就是用事先定义好的一些特定字符(元字符)或普通字符.及这些字符的组合,组成一个“规则字符串”,这个“规则字符串”用来判断我们给定的字符串 ...

随机推荐

  1. JSON: Circular Dependency Errors

    If you’re using Object Relational Mapping frameworks like Hibernate, and are using the bi-directiona ...

  2. HDU 5056 Boring count(不超过k个字符的子串个数)

    Boring count Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot ...

  3. hexSHA1散列加密解密(不可逆)

    1.maven引入codec和commons依赖: <dependency> <groupId>commons-codec</groupId> <artifa ...

  4. 设计模式-(18)命令模式 (swift版)

    一,概念: 在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”.但在某些场合,比如要对行为进行“记录.撤销/重做.事务”等处理,这种无法抵御变化的紧耦合是不合适的.在这种情况下,如何将 ...

  5. Android vector Path Data画图详解

    SVG是一种矢量图格式,是Scalable Vector Graphics三个单词的首字母缩写.在xml文件中的标签是,画出的图形可以像一般的图片资源使用,例子如下: <vector xmlns ...

  6. Linux共享内存(二)

    Linux共享内存编程实例 原文链接:http://blog.csdn.net/pcliuguangtao/article/details/6526119 /*共享内存允许两个或多个进程进程共享同一块 ...

  7. C++中continue

    /* C++中continue使用 Author:盗了一个你 */ #include<iostream> using namespace std; int main() { int val ...

  8. facebook chat api 使用

    官方API文档: https://developers.facebook.com/docs/chat/ 下面是根据文档修改的类: <?php class Invite_Chat{ protect ...

  9. 无线 WIFI 的13个信道频率范围(转载)

    转自:http://cnzhx.net/blog/13-channels-of-wifi/ 目前主流的无线WIFI网络设备不管是802.11b/g还是802.11b/g/n 一般都支持13个信道.它们 ...

  10. E20170523-hm

    parse   vt. 从语法上描述或分析(词句等); escape character  エスケープ文字 转义符 arity  [计] 数量; analyzevt. <美>分析; 分解; ...