PHP正则表达式考察点
正则表达式的作用
分隔、查找、匹配、替换字符串
正则表达式的组成部分
分隔符
"/"、"#"、"~"
通用原子
\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 callbackspreg_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正则表达式考察点的更多相关文章
- php基础知识考察点:正则表达式
1.正则表达式的作用:分割,查找,匹配,替换 字符串 2.分隔符:正斜线(/),hash符(#)以及取反符号(~). 3.通用原子:\d \D \s \S \w \W 4.原子符 5. 模式修正符 6 ...
- PHP面试(一):PHP基础知识考察点、网页考察点、Linux考察点、MySQL考察点
一.基础知识考察 1.引用变量的概念及定义方式——引用变量的原理 2.常量及数据类型——字符串的三种定义方法及各自的区别 3.运算符的使用——错误控制符.运算符优先级 4.流程控制操作 5.自定义函数 ...
- 【Java面试宝典】正则表达式
文章目录 正则表达式-语法 Pattern.compile方法 ● 请你谈谈Java中是如何支持正则表达式操作的? 考察点:正则表达式 参考回答: Java中的String类提供了支持正则表达式操作的 ...
- php面试专题---21、MVC框架基本工作原理考察点
php面试专题---21.MVC框架基本工作原理考察点 一.总结 一句话总结: 会的东西快速过,不要浪费时间,生命有限,都是一些很简单的东西. 1.mvc框架单一入口的 优势 是什么? 可以进行统一的 ...
- (一)PHP基础知识考察点
1,PHP引用变量的考察点: 概念:引用就是用不同的名字访问同一个变量内容. 定义方式: 使用&符号. PHP引用变量的工作原理 这里有个COW copy on write 用zval() ...
- JS正则表达式常用总结
正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...
- Python高手之路【五】python基础之正则表达式
下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...
- C# 正则表达式大全
文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...
- C#基础篇 - 正则表达式入门
1.基本概念 正则表达式(Regular Expression)就是用事先定义好的一些特定字符(元字符)或普通字符.及这些字符的组合,组成一个“规则字符串”,这个“规则字符串”用来判断我们给定的字符串 ...
随机推荐
- 可用内存free不足 hadoop3 无法启动 手动释放缓存 cache
[root@hadoop3 hadoop]# xlfg total used free shared buff/cache availableMem: 15 0 2 0 12 14Swap: 7 0 ...
- AutoIT: GUISetFont VS GUICtrlSetFont
GUISetFont 可以设置默认字体,后面的资源都会用该字体,而 GUICtrlSetFont 可以对特定控件的字体进行设置. ;Combo,setfont, GUICtrlSetFont $fon ...
- E20180128-hm
paradigm n. 范例,样式,模范; 词形变化表; outlet n. 出口,出路; 批发商店; 排水口,通风口; 发泄(情感)的方法;
- java面试(上)
http://blog.csdn.net/jackfrued/article/details/44921941 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:抽象是 ...
- bzoj 1927 [Sdoi2010]星际竞速【最小费用最大流】
果然还是不会建图- 设\( i \)到\( j \)有通路,代价为\( w[i][j] \),瞬移到i代价为\( a[i] \),瞬移到i代价为\( a[j] \),逗号前是流量. 因为每个点只能经过 ...
- MongoDB集群跨网络、跨集群同步方案
MongoDB集群跨网络.跨集群数据同步有以下几个方案,此处只是简单介绍,不过详细描述. 1.MongoDB自带的复制方案 优点:实施简单,不需要额外的技术栈 缺点:网络双向可连通. 2.CDC同步方 ...
- 安装 Apache Commons Logging API步骤
下载地址: http://commons.apache.org/logging/
- 2015湘潭市第七届大学生程序设计竞赛 —— Fraction
题目大意: 小数化分数,但是分母限制在[1,1000],很明显的枚举,但是在赛场上的时候傻逼了,无论怎么枚举,怎么二分就是wa,wa到死···········. (ps:我要给出题人寄刀片~~~~), ...
- gcc 编译 c++ 程序(转载)
单个源文件生成可执行程序 下面是一个保存在文件 helloworld.cpp 中一个简单的 C++ 程序的代码: /* helloworld.cpp */ #include <iostream& ...
- 223 Rectangle Area 矩形面积
在二维平面上计算出两个由直线构成的矩形叠加覆盖后的面积. 假设面积不会超出int的范围. 详见:https://leetcode.com/problems/rectangle-area/descrip ...