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 相关文章推荐
使用apache模块rewrite_module (转)
Feb 14 PHP
PHP 防注入函数(格式化数据)
Aug 08 PHP
simplehtmldom Doc api帮助文档
Mar 26 PHP
跟我学Laravel之安装Laravel
Oct 15 PHP
PHP curl伪造IP地址和header信息代码实例
Apr 27 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
Mar 18 PHP
PHP互换两个变量值的方法(不用第三变量)
Nov 14 PHP
php中通过eval实现字符串格式的计算公式
Mar 18 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
Oct 12 PHP
php微信公众号开发之简答题
Oct 20 PHP
不常用但很实用的PHP预定义变量分析
Jun 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源代码数组统计count分析
2011/08/02 PHP
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
2021/03/09 Servers
简单三步,搞掂内存泄漏
2007/03/10 Javascript
jQuery表格列宽可拖拽改变且兼容firfox
2014/09/03 Javascript
jQuery添加删除DOM元素方法详解
2016/01/18 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
JavaScript常用代码书写规范的超全面总结
2016/09/11 Javascript
基于 Vue 的树形选择组件的示例代码
2017/08/18 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
详解javascript 变量提升(Hoisting)
2019/03/12 Javascript
解决layer.prompt无效的问题
2019/09/24 Javascript
vue实现跳转接口push 转场动画示例
2019/11/01 Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
2019/11/20 Javascript
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
Python编程之列表操作实例详解【创建、使用、更新、删除】
2017/07/22 Python
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
python取代netcat过程分析
2018/02/10 Python
Python增强赋值和共享引用注意事项小结
2019/05/28 Python
python实现的读取网页并分词功能示例
2019/10/29 Python
Python input函数使用实例解析
2019/11/22 Python
python 连续不等式语法糖实例
2020/04/15 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
2020/05/19 Python
keras多显卡训练方式
2020/06/10 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
Django 实现图片上传和下载功能
2020/12/31 Python
用HTML5制作数字时钟的教程
2015/05/11 HTML / CSS
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
美国办公用品折扣网站:Shoplet.com
2019/11/24 全球购物
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
SOKOLOV官网:俄罗斯珠宝首饰品牌
2021/01/02 全球购物
春节联欢会策划方案
2014/05/16 职场文书
环保标语口号
2014/06/13 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
劳保用品管理制度范本
2015/08/06 职场文书
Python包argparse模块常用方法
2021/06/04 Python