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 相关文章推荐
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
Apr 12 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
Jul 23 PHP
header跳转和include包含问题详解
Sep 08 PHP
PHP 获取文件权限函数介绍
Jul 11 PHP
PHP中绘制图像的一些函数总结
Nov 19 PHP
php实现用已经过去多长时间的方式显示时间
Jun 05 PHP
php查询whois信息的方法
Jun 08 PHP
PHP实现批量修改文件后缀名的方法
Jul 30 PHP
PHP+Ajax无刷新带进度条图片上传示例
Feb 08 PHP
PHP钩子实现方法解析
May 21 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
Aug 14 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
Oct 21 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
浅析get与post的一些特殊情况
2014/07/28 PHP
Windows7下的php环境配置教程
2015/02/28 PHP
php获取一定范围内取N个不重复的随机数
2016/05/28 PHP
阿里云PHP SMS短信服务验证码发送方法
2017/07/11 PHP
清除网页历史记录,屏蔽后退按钮!
2008/12/22 Javascript
JavaScript 事件的一些重要说明
2009/10/25 Javascript
JS获取页面窗口大小的代码解读
2011/12/01 Javascript
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
jquery.qrcode在线生成二维码使用示例
2013/08/21 Javascript
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
javascript函数声明和函数表达式区别分析
2014/12/02 Javascript
javascript实现下拉提示选择框
2015/12/29 Javascript
JQuery Mobile实现导航栏和页脚
2016/03/09 Javascript
asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
2016/05/05 Javascript
Angular.js中$apply()和$digest()的深入理解
2016/10/13 Javascript
JavaScript变量作用域_动力节点Java学院整理
2017/06/27 Javascript
Vue之Watcher源码解析(1)
2017/07/19 Javascript
原生JS实现日历组件的示例代码
2017/09/22 Javascript
JavaScript获取用户所在城市及地理位置
2018/04/21 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
JS重学系列之聊聊new操作符
2019/03/04 Javascript
js脚本中执行java后台代码方法解析
2019/10/11 Javascript
JS函数进阶之继承用法实例分析
2020/01/15 Javascript
Python基类函数的重载与调用实例分析
2015/01/12 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
python 识别图片中的文字信息方法
2018/05/10 Python
python3用urllib抓取贴吧邮箱和QQ实例
2020/03/10 Python
HTML5的结构和语义(4):语义性的内联元素
2008/10/17 HTML / CSS
男女朋友协议书
2014/04/23 职场文书
人力资源管理专业应届生求职信
2014/04/24 职场文书
实习证明格式范文
2015/06/16 职场文书
公司环境卫生管理制度
2015/08/05 职场文书
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python
微信小程序调用python模型
2022/04/21 Python
Python  序列化反序列化和异常处理的问题小结
2022/12/24 Python