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 GD 图像处理组件的常用函数总结
Apr 28 PHP
PHP定时执行计划任务的多种方法小结
Dec 19 PHP
php jq jquery getJSON跨域提交数据完整版
Sep 13 PHP
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
Aug 25 PHP
php实现处理输入转义字符的代码
Nov 08 PHP
php+html5实现无刷新图片上传教程
Jan 22 PHP
php foreach如何跳出两层循环(详解)
Nov 05 PHP
Laravel学习教程之路由模块
Aug 18 PHP
基于php中echo用逗号和用点号的区别详解
Jan 23 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
Jun 10 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
Sep 28 PHP
php+iframe 实现上传文件功能示例
Mar 04 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
日本因肺炎疫情影响,这几部动漫推延播放!
2020/03/03 日漫
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
2011/11/02 PHP
PHP 读取大文件的X行到Y行内容的实现代码
2013/06/24 PHP
php阳历转农历优化版
2016/08/08 PHP
Laravel推荐使用的十个辅助函数
2019/05/10 PHP
Javascript 错误处理的几种方法
2009/06/13 Javascript
在javascript将NodeList作为Array数组处理的方法
2010/07/09 Javascript
Jquery判断$(&quot;#id&quot;)获取的对象是否存在的方法
2013/09/25 Javascript
JS解析XML实例分析
2015/01/30 Javascript
jQuery Validate表单验证插件 添加class属性形式的校验
2016/01/18 Javascript
关于JS中的apply,call,bind的深入解析
2016/04/05 Javascript
Javascript基础教程之比较null和undefined值
2016/05/16 Javascript
AngularJS入门教程之表单校验用法示例
2016/11/02 Javascript
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
2019/11/12 Javascript
Javascript柯里化实现原理及作用解析
2020/10/22 Javascript
[04:21]狐狸妈带你到现场 DOTA2 TI中国区预选赛线下赛路线指引
2014/05/22 DOTA
python使用点操作符访问字典(dict)数据的方法
2015/03/16 Python
Python实现常见的回文字符串算法
2018/11/14 Python
python2和python3的输入和输出区别介绍
2018/11/20 Python
彻底理解Python中的yield关键字
2019/04/01 Python
pymysql模块的操作实例
2019/12/17 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
从0到1使用python开发一个半自动答题小程序的实现
2020/05/12 Python
keras中模型训练class_weight,sample_weight区别说明
2020/05/23 Python
css3的transition属性详解
2014/12/15 HTML / CSS
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
医生实习工作总结的自我评价
2013/09/27 职场文书
统计岗位职责
2014/02/21 职场文书
邀请函模板
2015/02/02 职场文书
病人慰问信范文
2015/02/15 职场文书
小学安全教育主题班会
2015/08/12 职场文书
高中团支书竞选稿
2015/11/21 职场文书
golang goroutine顺序输出方式
2021/04/29 Golang
golang的文件创建及读写操作
2022/04/14 Golang
讲解Python实例练习逆序输出字符串
2022/05/06 Python