PHP中的正则表达式函数介绍


Posted in PHP onFebruary 27, 2012

正则表达式(Regular Expression)

正则表达式系统:

1.POSIX

2.Perl

PHP中使用的regex是PCRE:

NOTE:PCRE(Perl兼容正则表达式,Perl Compatible Regular Expressions)

PCRE语法:

1.定界符

必须成对出现,可以使用除0-9a-zA-Z\以外的任何字符

2.原子

1.正则需要匹配的可见和不可见字符都是原子

2.一个正则表达式最少含有一个原子

3.当需要匹配诸如"("、"["、"^"等含有语义的符号时需要用"\"反斜线进行转义

原子字符:

\f 匹配换页符

\n 匹配换行符

\r 匹配回车符

\t 匹配制表符

\v 匹配垂直制表符

3.元字符

\ 转义字符

^ 匹配字符串起始处

$ 匹配字符串末尾

. 匹配除"\n"之外的任何单个字符

* 匹配前面的子表达式0或多次

+ 匹配前面的子表达式1次或多次

? 匹配前面的子表达式0次或1次

{n} 匹配n次

{n,} 匹配n次或n次以上

{n,m} 最少匹配n次至多匹配m次,(n<=m)

[] 中括号代表原子表,中间的原子地位都是相等。在匹配的时候,匹配表中的任意一个字符

[^] 抑扬符,排除后面的原子表所包含的字符。

(pattern) 匹配pattern并获取这一匹配。

\num 对获取的第num个匹配的引用。

(?:pattern) 匹配pattern但不获取这一匹配

(?=pattern) 正向肯定预查,非获取匹配,例如:windows(?=XP|7)能匹配windowsXP中的windows不能匹配windows98中的windows

(?!=pattern) 正向否定欲查非获取匹配,例如:windows(?!98|2000),能匹配windowsXP中的windows,不能匹配windows98中的windows

(?<=pattern) 反向肯定预查,非获取匹配。例如:(?<=My|Postgre)SQL能匹配MySQL中的SQL,不能匹配MSSQL中的SQL

(?<!pattern) 反向否定预查,非获取匹配。例如:(?<!My|Postgre)SQL能匹配MSSQL中的SQL,不能匹配MySQL中的SQL

\b 匹配单词边界

\B 匹配除单词边界以外的字符


\d 匹配任何一个数字。等价于[0-9]

\D 匹配任何一个非数字以外的字符。等价于[^0-9]

\s 匹配任何一个空白字符(包括空格、制表符、换页符等)。等价于[\f\n\r\t\v]

\S 匹配任何一个非空白字符。等价于[^\f\n\r\t\v]


\w 匹配任何一个数字、字母或下划线。等价于[0-9a-zA-Z]

\W 匹配任何一个非数字、字母或下划线的字符。等价于[^0-9a-zA-Z]

4.模式修正符

i 不区分大小写

m 此模式中如果有回车或换行,^和$将匹配每行的行首和行尾

s 让.能匹配\n

x 忽略空白

U 取消贪婪,相当于(.*?)

A 与^效果一样

D 结尾处不忽略回车 ,在结束处有$符的时候,在匹配的字符串后面加上回车,$依然能够匹配它成功。但是加上D之后,结尾的回车,不再匹配

  NOTE:正则表达式是从左向右进行匹配的

相关函数:

preg_filter — 执行一个正则表达式搜索和替换

preg_grep — 返回匹配模式的数组条目

preg_last_error — 返回最后一个PCRE正则执行产生的错误代码

preg_match_all — 执行一个全局正则表达式匹配

preg_match — 执行一个正则表达式匹配

preg_quote — 转义正则表达式字符

preg_replace_callback — 执行一个正则表达式搜索并且使用一个回调进行替换

preg_replace — 执行一个正则表达式的搜索和替换

preg_split — 通过一个正则表达式分隔字符串

PHP 相关文章推荐
php录入页面中动态从数据库中提取数据的实现
Oct 09 PHP
开源SNS系统-ThinkSNS
May 18 PHP
PHP 采集程序原理分析篇
Mar 05 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
May 06 PHP
基于php 随机数的深入理解
Jun 05 PHP
php自定文件保存session的方法
Dec 10 PHP
PHP封装的Twitter访问类实例
Jul 18 PHP
PHP直接修改表内容DataGrid功能实现代码
Sep 24 PHP
PHP中Http协议post请求参数
Nov 02 PHP
分享PHP守护进程类
Dec 30 PHP
php 微信开发获取用户信息如何实现
Dec 13 PHP
php png失真的原因及解决办法
Nov 17 PHP
支持中文字母数字、自定义字体php验证码代码
Feb 27 #PHP
一些需要禁用的PHP危险函数(disable_functions)
Feb 23 #PHP
PHP面向对象法则
Feb 23 #PHP
优化PHP程序的方法小结
Feb 23 #PHP
数据库中排序的对比及使用条件详解
Feb 23 #PHP
PHP中几个常用的魔术常量
Feb 23 #PHP
PHP教程之PHP中shell脚本的使用方法分享
Feb 23 #PHP
You might like
亲密接触PHP之PHP语法学习笔记1
2006/12/17 PHP
php计算两个日期相差天数的方法
2015/03/14 PHP
学习php设计模式 php实现建造者模式
2015/12/07 PHP
PHP入门教程之操作符与控制结构流程详解
2016/09/09 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
2018/10/16 PHP
PDO实现学生管理系统
2020/03/21 PHP
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
jquery入门—访问DOM对象方法
2013/01/07 Javascript
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
JQuery入门基础小实例(1)
2015/09/17 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
AngularJS ng-template寄宿方式用法分析
2016/11/07 Javascript
node+experss实现爬取电影天堂爬虫
2016/11/20 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
JavaScript基础之流程控制语句的用法
2017/08/31 Javascript
JS使用tofixed与round处理数据四舍五入的区别
2017/10/25 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
Moment.js实现多个同时倒计时
2019/08/26 Javascript
利用JS代码自动删除稿件的普通弹幕功能
2019/09/20 Javascript
利用layer实现表单完美验证的方法
2019/09/26 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
[29:23]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场1
2014/05/23 DOTA
python3.3教程之模拟百度登陆代码分享
2014/01/16 Python
Python实现快速多线程ping的方法
2015/07/15 Python
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
对python中return和print的一些理解
2017/08/18 Python
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
python实现网页自动签到功能
2019/01/21 Python
Python搭建代理IP池实现存储IP的方法
2019/10/27 Python
函授药学自我鉴定
2014/02/07 职场文书
乡镇民主生活会发言材料
2014/10/20 职场文书
健康教育主题班会
2015/08/14 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
Win10加载疑难解答时出错发生意外错误的解决方法
2022/07/07 数码科技