基于PHP的正则表达式
用法
从某个字符抽取信息
用新文本替换匹配的文本
把字符串拆分成小块字符串组成的数组
基础
preg_match('/需要匹配的正则表达式/', '字符串');
正则匹配模式
集合:
[xxxx]--一个字符串的可选范围,[ ^xxxxx]--一个字符串的不可选范围
选择性:
A|B: A或者B
重复序列: 重复模式 + 量词
量词
? --------------- 一次或者零次
* --------------- 零次或者多次
+ --------------- 一次或者多次
{n} ------------ n次
{n, m} ------- 至少n次,至多m次
{n, } -------------- 至少n次
贪婪
当匹配是遇到一个量词时,正则表达式引擎会尽可能多的匹配这个模式
非贪婪匹配(最少匹配), 在量词后面加一个问号
子模式: 使用小括号把几个正则表达式组合在一起
捕获模式
preg_match('/正则表达式/', string, array);
array保存子模式匹配到的子字符串(依次放到第一位,第二位......), 开始位置放置string。
非捕获模式
当某些子模式不需要在匹配到时捕获,可以改写子模式(subpattern)为(?:subpattern)
分隔符:
任何非数字字母字符都可以被用来当做分隔符,来区分分隔符与表达式。
字符类: 字符类中使用的命名字符集
[:alnum:] --------------------- [0-9a-zA-Z]
[:alpha:] ---------------------- [a-zA-Z]
......
eg: 要查找任意一个数字,字母,或者@
[@[:digit:][:upper:]]
Hint: 排序序列[st[.ch.]] 匹配s, t, ch的其中一个
等价类[=XXX=] 匹配本地定义的具有相同排序序列的字符
锚(anchor): 将匹配限制在字符串中的特定位置
^ -------------------- 字符串、一行开始
$ -------------------- 字符串、一行结束
[[:<:]] -------------------- 单词开始
[[:>:]] -------------------- 单词结束
......
后缀选项
perl风格的正则表达式允许把一个单个字符放在正则表达式后面,从而改变表达式的解析, 行为, 匹配方式。
后缀标识(一个模式中可以使用多个):
/regexp/i ------------- 匹配大小写
/regexp/s ------------ 使句点匹配任何字符
/regexp/x ------------ 去掉空白和注释
/regexp/m ------------ 使得^匹配换行符之后的内容,$匹配换行符之前的内容
......
内联选项
内联选项可以在一个模式内部指定仅运用于部分模式的后缀选项
(?flags:subpattern) 设置内联选项
(?-flags:subpattern) 取消模式后面的选项
((?flags:subpattern)) 内联标志不能用于捕获数组,需要额外设置一个小括号来完成捕获
前向/后向断言
待填坑
条件表达式
(?(condition)yespattern\nopattern)
函数
匹配: preg_match(pattern, string[, captured]);
替换: preg_replace(pattern, replacement, subject[, limit]);
拆分: preg_split (pattern, string) (pattern表示分割块)
过滤数组: preg_grep (pattern, array) 返回给定模式匹配的所有元素、
构造指定正则表达式: preg_quote (string );
基于PHP的正则表达式的更多相关文章
- 基于ε-NFA的正则表达式引擎
正则表达式几乎每个程序员都会用到,对于这么常见的一个语言,有没有想过怎么去实现一个呢?乍一想,也许觉得困难,实际上实现一个正则表达式的引擎并没有想像中的复杂,<编译原理>一书中有一章专门讲 ...
- 基于java的正则表达式
正则表达式概念 正则表达式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描 ...
- 正则表达式基于JavaScript的入门详解
关于正则表达式,和很多前辈聊起这个知识点时,他们的反馈都比聊其他技术谦逊,而和很多刚入门的程序员讨论时甚至会有觉得你看不起他. 的确,正则表达式从通常的应用来看,的确不难,比如电话,邮箱等验证.语法, ...
- 【转】java正则表达式
在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu ...
- JAVA 正则表达式 (超详细)
(PS:这篇文章为转载,我不喜欢转载的但我觉得这篇文章实在是超赞了,就转了过来,这篇可以说是学习JAVA正则表达的必读篇.作者是个正真有功力的人,阅读愉快) 在Sun的Java JDK 1.40版本中 ...
- 转载:JAVA 正则表达式 (超详细)
在Sun的JavaJDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用Java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu x ...
- 关于pcre正则表达式库libpcre
gcc 4.8中已经包含了std regex的头文件 可是没有实现,所以链接是失败的 gcc 4.9完整的支持了c++ 11的regex. 在4.9以前,可以寻求boost的regex. 不过,我更熟 ...
- 基于php常用正则表达整理(下)
61 \n 匹配一个换行符.等价于 \x0a 和 \cJ.62 \r 匹配一个回车符.等价于 \x0d 和 \cM.63 \s 匹配任何空白字符,包括空格.制 ...
- 基于php常用正则表达整理(上)
电子邮件:/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/变量:/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/ 基于p ...
随机推荐
- 谈谈网站测试中的AB测试方法
什么是A/B测试? A / B测试,即你设计的页面有两个版本(A和B),A为现行的设计, B是新的设计.比较这两个版本之间你所关心的数据(转化率,业绩,跳出率等) ,最后选择效果最好的版本. A / ...
- Android-利用LinearGradient实现文字一闪一闪
效果如下图所示: 具体实现方式如下: 1,自定义一个LinearGradientTextView 继承 TextView ,重写onSizeChanged和onDraw.: public class ...
- UVA-11374(最短路)
题意: 机场快线有经济线和商业线,现在分别给出经济线和商业线的的路线,现在只能坐一站商业线,其他坐经济线,问从起点到终点的最短用时是多少,还有路线是怎样的; 思路: 预处理出起点到所有站的最短距离和终 ...
- Chapter2——如何分析Android程序
前几天买了<Android软件安全与逆向分析>这本书,决定在这里记一些笔记. 第一章介绍了如何搭建环境,此处略去:第二章开始讲分析Android程序. 下面按顺序记录关键内容. ----- ...
- Linux下抓包工具tcpdump应用详解
TCPDUMP简介 在传统的网络分析和测试技术中,嗅探器(sniffer)是最常见,也是最重要的技术之一.sniffer工具首先是为网络管理员和网络程序员进行网络分析而设计的.对于网络管理人员来说 ...
- AJAX获取数据,需要添加事件
如果是通过异步请求从后端获取的数据来渲染页面,要添加事件,必须要在页面已有的元素上,添加时间代理.因为页面渲染需要时间,如果直接绑定在响应时间元素上面,很有可能触发不了事件.
- 洛谷P1462通往奥格瑞玛的道路——二分答案最短路
题目:https://www.luogu.org/problemnew/show/P1462 最大值最小问题,二分答案. 代码如下: #include<iostream> #include ...
- 上传图片时压缩图片 - 前端(canvas)做法
HTML前端代码: <?php $this->layout('head'); ?> <?php $this->layout('sidebar'); ?> <m ...
- 屏蔽iframe中超链接
<style type="text/css"> .mask { position: absolute; width: 290px; height: 96px; z-in ...
- 线段树优化建图(cf787d, 2019Wannafly Winter Camp Day7 Div1 E)
线段树优化建图,用于区间到区间建边时降低空间复杂度 建立两颗线段树,一颗in, 代表进入这个区间,一颗out,代表从这个区间出去 in树从父亲向儿子建边,代表宏观进入整个区间,不向下寻找 out树从儿 ...