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 相关文章推荐
资料注册后发信小技巧
Oct 09 PHP
一个简单的自动发送邮件系统(一)
Oct 09 PHP
PHP+javascript液晶时钟
Oct 09 PHP
用php解析html的实现代码
Aug 08 PHP
php 文件缓存函数
Oct 08 PHP
php限制上传文件类型并保存上传文件的方法
Mar 13 PHP
PHP5.3以上版本安装ZendOptimizer扩展
Mar 27 PHP
php使用cookie实现记住用户名和密码实现代码
Apr 27 PHP
PHP的时间戳与具体时间转化的简单实现
Jun 13 PHP
PHP简单实现DES加密解密的方法
Jul 12 PHP
php array 转json及java 转换 json数据格式操作示例
Nov 13 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 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中通过fopen()函数访问远程文件示例
2014/11/18 PHP
深入讲解PHP Session及如何保持其不过期的方法
2015/08/18 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
yii权限控制的方法(三种方法)
2015/12/28 PHP
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
Javascript 定时器调用传递参数的方法
2009/11/12 Javascript
Extjs中常用表单介绍与应用
2010/06/07 Javascript
Ext修改GridPanel数据和字体颜色、css属性等
2014/06/13 Javascript
jquery和js实现对div的隐藏和显示方法
2014/09/26 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
Javascript类型系统之String字符串类型详解
2016/06/21 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
详解angular 中的自定义指令之详解API
2017/06/20 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
2019/11/29 Javascript
小程序新版订阅消息模板消息
2019/12/31 Javascript
微信小程序pinker组件使用实现自动相减日期
2020/05/07 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
jquery简易手风琴插件的封装
2020/10/13 jQuery
用Python给文本创立向量空间模型的教程
2015/04/23 Python
Python使用爬虫猜密码
2016/02/19 Python
Python中异常重试的解决方案详解
2017/05/05 Python
python制作朋友圈九宫格图片
2019/11/03 Python
解决Keras使用GPU资源耗尽的问题
2020/06/22 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
2020/07/14 Python
python如何调用百度识图api
2020/09/29 Python
python 使用cycle构造无限循环迭代器
2020/12/02 Python
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
美特斯邦威官方商城:邦购网
2016/10/13 全球购物
日本最大的旅游网站:Rakuten Travel(乐天旅游)
2018/08/02 全球购物
2014年移动公司工作总结
2014/12/08 职场文书
会计求职自荐信
2015/03/26 职场文书
好段摘抄大全(48句)
2019/08/08 职场文书
新手必备Python开发环境搭建教程
2021/05/28 Python