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下几个常用的去空、分组、调试数组函数
Feb 22 PHP
《PHP编程最快明白》第五讲:php目录、文件操作
Nov 01 PHP
zend api扩展的php对象的autoload工具
Apr 18 PHP
不重新编译PHP为php增加openssl模块的方法
Jun 14 PHP
3个PHP多维数组转为一维数组的方法实例
Mar 13 PHP
php中替换字符串中的空格为逗号','的方法
Jun 09 PHP
在html文件中也可以执行php语句的方法
Apr 09 PHP
利用laravel搭建一个迷你博客实战教程
Aug 13 PHP
PHP5.6读写excel表格文件操作示例
Feb 26 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 PHP
php生成word并下载代码实例
Mar 15 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
Mar 25 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
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
PHP自定义多进制的方法
2016/11/03 PHP
经典的解除许多网站无法复制文字的绝招
2006/12/31 Javascript
Javascript 中介者模式实例
2009/12/16 Javascript
解决Extjs4中form表单提交后无法进入success函数问题
2013/11/26 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
Jquery Uploadify上传带进度条的简单实例
2014/02/12 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
使用jquery获取url以及jquery获取url参数的实现方法
2016/05/25 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
jQuery实现的模拟弹出窗口功能示例
2016/11/24 Javascript
angularJS+requireJS实现controller及directive的按需加载示例
2017/02/20 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
详解Js中的模块化是如何实现的
2017/10/18 Javascript
如何用Node写页面爬虫的工具集
2018/10/26 Javascript
node.js中事件触发器events的使用方法实例分析
2019/11/23 Javascript
八种Vue组件间通讯方式合集(推荐)
2020/08/18 Javascript
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
Python使用add_subplot与subplot画子图操作示例
2018/06/01 Python
python多行字符串拼接使用小括号的方法
2020/03/19 Python
python opencv 批量改变图片的尺寸大小的方法
2019/06/28 Python
python matplotlib库绘制散点图例题解析
2019/08/10 Python
Python属性和内建属性实例解析
2020/01/14 Python
Python下利用BeautifulSoup解析HTML的实现
2020/01/17 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
基于OpenCV的路面质量检测的实现
2020/11/04 Python
非常震撼的纯CSS3人物行走动画
2016/02/24 HTML / CSS
css3 实现元素弧线运动的示例代码
2020/04/24 HTML / CSS
大学本科毕业生求职信范文
2013/12/18 职场文书
生日寿宴答谢词
2014/01/19 职场文书
《故都的秋》教学反思
2014/04/15 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
2014年预算员工作总结
2014/12/05 职场文书
同乡会致辞
2015/07/30 职场文书