PHP 正则表达式小结


Posted in PHP onFebruary 12, 2015

1.PHP中两个常用的正则函数

a.preg_match 正则函数,以perl语言为基础

语法:preg_match( mode,string subject,array matches)

说明:mode参数---- 正则的模块,也就是正则表达式(语法)
subject参数---- 正则的内容
matches参数---- 正则的结果(获得一个数组的形式)

b.ereg 正则函数,以POSIX基础(Unix、Script)

语法:ereg(mode ,string subject, array regs)

2.正则表达式中包括的元素

a.原子(普通字符:a-z A-Z 0-9 、原子表、转义字符)
b.元字符(有特殊功能的字符,如:# 、*)
c.模式修正符(系统内置部分字符 i、m、S、U ...)

3.正则表达式中的“原子”

a.a-z A-Z _ 0-9 //最常见的字符
b.(abc)(skd) //用圆括号包含起来的单元符号(一个整体)
c.[abcs][^abd] //用方括号包含的原子表,原子表中的^代表排除或相反的内容
d.转义字符
\d 包含所有的数字[0-9]
 \D 除所有数字外[^0-9]
 \w 包含所有英文字符[a-z A-Z 0-9]
 \W 除所有英文字符外[^a-z A-Z 0-9]
 \s 回车,换行等
......

注明: 圆括号 必须是整体才能匹配; 方括号 只要是其子集,都可以匹配(内容存在)

4.正则表达式元字符

* 匹配前一个内容的0次1次或多次
. 匹配内容的0次1次或多次,但不包含回车换行(代指自己,任何内容)
 + 匹配前一个内容的1次或多次
 ? 匹配前一个内容的0次或1次
| 选择匹配类似PHP中的| (因为这个运算符合是弱类型导致前面最为整体匹配,类似一个单词匹配)
^ 匹配字符串首部内容
$ 匹配字符串尾部内容
\b 匹配单词边界,边界可以是空格或者特殊符合(有单词分界符,类似空格)
\B 匹配除带单词边界意外内容(无单词分界符)
{m} 匹配前一个内容的重复次数为M次
{m,} 匹配前一个内容的重复次数大于等于M次
{m,n} 匹配前一个内容的重复次数M次到N次
( ) 合并整体匹配,并放入内存,可使用\\1 \\2…依次获取 (调用放入内存中的内容)

5.运算顺序

依然遵循从左到→右的运算规则

优先级:
( ) 圆括号因为是内存处理所以最高
* ? + { } 重复匹配内容其次
^ $ \b 边界处理第三
| 条件处理第四
 最后按照运算顺序计算匹配

6.模式修正符

模式修正符是为正则表达式增强和补充的一个功能,使用在正则之外 例如:/ 正则 / U

常用修正符:
i 正则内容在匹配时候不区分大小写(默认是区分的)
m 在匹配首内容或者尾内容时候采用多行识别匹配
s 将转义回车取消是为单行匹配如. 匹配的时候
x 忽略正则中的空白
A 强制从头开始匹配
D 强制$匹配尾部无任何内容 \n
U 禁止贪婪匹配 只跟踪到最近的一个匹配符并结束, 常用在采集程序上的正则表达式

7.匹配功能

preg_match_all 全部匹配函数
 语法:preg_match_all ( string pattern, string subject, array matches [, int flags] )

说明:对结果排序使 $matches[0] 为全部模式匹配的数
 用途:截取比较详细的内容,采集网页,分析文本

8.替换功能

preg_replace 正则替换函数
 语法:preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )

说明:通过正则表达式来替换相关内容,类似之前学过的str_replace字符串替换,但 功能要强于它
提示:1、替换内容可以是一个正则也可以是数组正则
2、替换内容可以通过修正符e来解决替换执行内容
 用途:替换一些比较复杂的内容上,也可以用于内容的转换上

9.分割功能

preg_split 正则切割
 语法:preg_split ( string pattern, string subject [, int limit [, int flags]] )
说明:通过正则表达式来切割相关内容,类似之前学过的explode切割函数,但explode 只能按照一种方式切割有局限性。

PHP 相关文章推荐
php中的时间显示
Jan 18 PHP
PHP学习笔记之二
Jan 17 PHP
用php的ob_start来生成静态页面的方法分析
Mar 09 PHP
在PHP中运行Linux命令并启动SSH服务的例子
Jun 12 PHP
php+ajax实现图片文件上传功能实例
Jun 17 PHP
php的debug相关函数用法示例
Jul 11 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
May 30 PHP
PHP微信开发之微信录音临时转永久存储
Jan 26 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
Oct 31 PHP
详解php中curl返回false的解决办法
Mar 18 PHP
Laravel 在views中加载公共页面的实现代码
Oct 22 PHP
PHP7原生MySQL数据库操作实现代码
Jul 03 PHP
一个非常完美的读写ini格式的PHP配置类分享
Feb 12 #PHP
PHP动态输出JavaScript代码实例
Feb 12 #PHP
PHP使用JSON和将json还原成数组
Feb 12 #PHP
服务器上配置PHP运行环境教程
Feb 12 #PHP
PHP保存带BOM文件的方法
Feb 12 #PHP
自己写的php curl库实现整站克隆功能
Feb 12 #PHP
PIGCMS 如何关闭聊天机器人
Feb 12 #PHP
You might like
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
createElement动态创建HTML对象脚本代码
2008/11/24 Javascript
js 获取和设置css3 属性值的实现方法
2013/05/06 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
jQuery实现瀑布流的取巧做法分享
2015/01/12 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
2015/06/19 Javascript
使用jQuery在对象中缓存选择器的简单方法
2015/06/30 Javascript
纯JS代码实现气泡效果
2016/05/04 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
2016/09/14 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
Vue获取DOM元素样式和样式更改示例
2017/03/07 Javascript
Angular2关于@angular/cli默认端口号配置的问题
2017/07/15 Javascript
Vue学习笔记进阶篇之函数化组件解析
2017/07/21 Javascript
基于Vue2x的图片预览插件的示例代码
2018/05/14 Javascript
Python版实现微信公众号扫码登陆
2020/05/28 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
2020/10/28 Javascript
jQuery实现穿梭框效果
2021/01/19 jQuery
[02:32]DOTA2完美大师赛场馆静安体育中心观赛全攻略
2017/11/08 DOTA
python中字符串内置函数的用法总结
2018/09/13 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
2019/02/22 Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
2019/07/31 Python
深入学习python多线程与GIL
2019/08/26 Python
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
Perfume’s Club中文官网:西班牙美妆在线零售品牌
2020/08/24 全球购物
医学专业毕业生个人求职信
2013/12/25 职场文书
医学生职业规划范文
2014/01/05 职场文书
会计专业自我评价
2014/02/12 职场文书
大学迎新晚会主持词
2014/03/24 职场文书
庐山导游词
2015/02/03 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书
创业计划书之餐饮馄饨店
2019/07/18 职场文书
SQL Server数据定义——模式与基本表操作
2021/04/05 SQL Server
5种 JavaScript 方式实现数组扁平化
2021/10/05 Javascript