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的知识
Nov 17 PHP
PHP 的几个配置文件函数
Dec 21 PHP
Drupal7 form表单二次开发要点与实例
Mar 02 PHP
php设计模式之简单工厂模式详解
Sep 04 PHP
如何让thinkphp在模型中自动完成session赋值小教程
Sep 05 PHP
php可生成缩略图的文件上传类实例
Dec 17 PHP
PHP、Python和Javascript的装饰器模式对比
Feb 03 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
Mar 05 PHP
如何使用微信公众平台开发模式实现多客服
Jan 06 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
May 16 PHP
PHP 枚举类型的管理与设计知识点总结
Feb 13 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
Oct 30 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
php5 pdo新改动加载注意事项
2008/09/11 PHP
php empty,isset,is_null判断比较(差异与异同)
2010/10/19 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
2016/01/19 PHP
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
JavaScript设计模式之代理模式介绍
2014/12/28 Javascript
限制上传文件大小和格式的jQuery插件实例
2015/01/24 Javascript
jquery实现顶部向右伸缩的导航区域代码
2015/09/02 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
2017/05/18 Javascript
LayerClose弹窗关闭刷新方法
2018/08/17 Javascript
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
使用webpack4编译并压缩ES6代码的方法示例
2019/04/24 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
通过图带你深入了解vue的响应式原理
2019/06/21 Javascript
layui数据表格 table.render 报错的解决方法
2019/09/29 Javascript
JavaScript实现简易计算器小功能
2020/10/22 Javascript
JavaScript 生成唯一ID的几种方式
2021/02/19 Javascript
[01:27:30]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python中正则表达式的使用详解
2014/10/17 Python
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
python实现从字典中删除元素的方法
2015/05/04 Python
Python类属性与实例属性用法分析
2015/05/09 Python
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
简述Python中的进程、线程、协程
2016/03/18 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
Python3爬虫发送请求的知识点实例
2020/07/30 Python
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
采用冷却技术的超自然舒适度:GhostBed床垫
2018/09/18 全球购物
竞选演讲稿范文
2013/12/28 职场文书
施工班组长岗位职责
2014/01/05 职场文书
秋天的图画教学反思
2014/05/01 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
职场:企业印章管理制度(模板)
2019/10/18 职场文书
【DOTA2】总决赛血虐~ XTREME GAMING vs MAGMA - OGA DOTA PIT 2022 CN
2022/04/02 DOTA