PHP学习之正则表达式


Posted in PHP onApril 17, 2011

现在我们大家所说的正则表达式基本上是指兼容Perl风格的正则表达式。POSIX风格的正则表达式基本上没人使用了,所以从PHP5.3起,已经不推荐使用了,可能到PHP的下一个版本就会把相关的函数删除。

关于正则表达式,因为太复杂,所以以后想专看一本正则的书,所以只介绍兼容Perl风格的正则表达式的一些函数。

1. 定界符
定界符表示正则表达式的开始和结尾,一般用斜线(/)表示。在PHP中(其它语言暂时没有测试过),它也可以用其它的非数字字母的字符来代替。如/\d+/和#\d+#的表示同一个正则表达式\d+。同时,也可以用小括号对,中括号对,大括号对做为定界符,如[\d+]。

2. 函数
匹配函数:preg_match(); 以及preg_match_all();
替换函数:preg_replace();
拆分函数:preg_split();
过滤函数:preg_grep();

示例代码:

$a = <<< TEXT 
aaaaaaa 15 
bbbbbbb 16 
TEXT; 
$ret = preg_match(/(\w+) (\d+)/, $a, $match); 
// $ret : 1 
// $match : array(aaaaaaa 15′, aaaaaaa, 15′) $ret = preg_match_all(/(\w+) (\d+)/, $a, $match); 
// $ret : 2 
// $match : array( 
// array(aaaaaaa 15′, bbbbbbb 16′), 
// array(bbbbbbb, bbbbbbb), 
// array(15′, 16′), 
// ) 
$ret = preg_match_all(/(\w+) (\d+)/, $a, $match, PREG_SET_ORDER); 
// $ret : 2 
// $match : array( 
// array(aaaaaaa 15′, bbbbbbb, 15′), 
// array(bbbbbbb 16′, bbbbbbb, 16′), 
// ) 
$b = preg_replace(/(\w+) (\d+)/, \1, \2′, $a); 
// $b : aaaaaaa, 15 
// bbbbbbb, 16′ 
$c = preg_split(/\s/, $a); 
// $c : array(aaaaaaa, 15′, bbbbbbb, 16′) 
$files = array(aa.txt, bb.xls, cc.txt); 
$txtFiles = preg_grep(/.*\.txt/, $files); 
// $txtFiles : array(aa.txt, cc.txt)

参考资料:
PHP程序设计,2003,第四章 字符串,正则表达式
PHP 相关文章推荐
php时间不正确的解决方法
Apr 09 PHP
PHP的加密方式及原理
Jun 14 PHP
PHP gbk环境下json_dencode传送来的汉字
Nov 13 PHP
探讨:web上存漏洞及原理分析、防范方法
Jun 29 PHP
PHP判断是否有Get参数的方法
May 05 PHP
PHP中的Trait 特性及作用
Apr 03 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
Dec 31 PHP
PHP验证类的封装与使用方法详解
Jan 10 PHP
laravel Validator ajax返回错误信息的方法
Sep 29 PHP
laravel框架的安装与路由实例分析
Oct 11 PHP
laravel入门知识点整理
Sep 15 PHP
PHP学习之字符串比较和查找
Apr 17 #PHP
PHP学习之整理字符串
Apr 17 #PHP
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
Apr 17 #PHP
PHP基础学习小结
Apr 17 #PHP
php 生成文字png图片的代码
Apr 17 #PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
Apr 17 #PHP
php编写一个简单的路由类
Apr 13 #PHP
You might like
PHP静态新闻列表自动生成代码
2007/06/14 PHP
php str_pad 函数使用详解
2009/01/13 PHP
php递归实现无限分类的方法
2015/07/28 PHP
PHP实现linux命令tail -f
2016/02/22 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
深入研究PHP中的preg_replace和代码执行
2018/08/15 PHP
Javascript算符的优先级介绍
2013/03/20 Javascript
node.js中的fs.fsyncSync方法使用说明
2014/12/15 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
jQuery实现的无限级下拉菜单功能示例
2016/09/12 Javascript
js弹性势能动画之抛物线运动实例详解
2017/07/27 Javascript
node.js基于express使用websocket的方法
2017/11/09 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
[07:43]《辉夜杯》公开赛晋级外卡赛战队—TRG训练生活探秘
2015/12/11 DOTA
Python构建XML树结构的方法示例
2017/06/30 Python
python如何使用unittest测试接口
2018/04/04 Python
用pandas按列合并两个文件的实例
2018/04/12 Python
python读取几个G的csv文件方法
2019/01/07 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
2019/06/03 Python
python实现交并比IOU教程
2020/04/16 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
python能自学吗
2020/06/18 Python
基于python实现坦克大战游戏
2020/10/27 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
2020/11/28 Python
CSS3制作精致的照片墙特效
2016/06/07 HTML / CSS
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
捷克家居装饰及图书音像购物网站:Velký košík
2018/04/16 全球购物
奥利奥广告词
2014/03/20 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
新生开学寄语大全
2015/05/28 职场文书
学校运动会通讯稿
2015/07/18 职场文书
公司人事管理制度
2015/08/05 职场文书
银行柜员工作心得体会
2016/01/23 职场文书
Python的这些库,你知道多少?
2021/06/09 Python
vue3使用vuedraggable实现拖拽功能
2022/04/06 Vue.js