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+mysql实现无限级分类 | 树型显示分类关系
Nov 19 PHP
php URL编码解码函数代码
Mar 10 PHP
php堆排序(heapsort)练习
Nov 13 PHP
php中rename函数用法分析
Nov 15 PHP
thinkphp模板用法和内容输出实例
Nov 28 PHP
php模拟登陆的实现方法分析
Jan 09 PHP
php判断表是否存在的方法
Jun 18 PHP
PHP生成各种常见验证码和Ajax验证过程
Jan 10 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
Dec 23 PHP
PHP中字符串长度的截取用法示例
Jan 12 PHP
php 函数使用可变数量的参数方法
May 02 PHP
php获得刚插入数据的id 的几种方法总结
May 31 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
在线短消息收发的程序,不用数据库
2006/10/09 PHP
php像数组一样存取和修改字符串字符
2014/03/21 PHP
PHP单例模式详细介绍
2015/07/01 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
2017/09/29 PHP
ajax 缓存 问题 requestheader
2010/08/01 Javascript
关于javascript中this关键字(翻译+自我理解)
2010/10/20 Javascript
jQuery autocomplate 自扩展插件、自动完成示例代码
2011/03/28 Javascript
jquery刷新页面的实现代码(局部及全页面刷新)
2011/07/11 Javascript
javascript 保存文件到本地实现方法
2012/11/29 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
正负小数点后两位浮点数实现原理及代码
2013/09/06 Javascript
jquery ajax请求方式与提示用户正在处理请稍等
2014/09/01 Javascript
jQuery滚动加载图片实现原理
2015/12/14 Javascript
详谈javascript异步编程
2016/02/21 Javascript
分享JavaScript监听全部Ajax请求事件的方法
2016/08/28 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
js实现鼠标左右移动,图片也跟着移动效果
2017/01/25 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
2017/09/29 Javascript
JavaScript实现简单的文本逐字打印效果示例
2018/04/12 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
JavaScript代码调试方法实例小结
2019/01/05 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
2020/08/08 Javascript
[01:56]生活中的妖精之七夕特别档
2016/08/09 DOTA
[46:37]LGD vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
django orm模块中的 is_delete用法
2020/05/20 Python
keras得到每层的系数方式
2020/06/15 Python
CSS3中background-clip和background-origin的区别示例介绍
2014/03/10 HTML / CSS
意大利和国际奢侈品牌购物网站:Suitnegozi.com
2021/01/15 全球购物
顶撞领导检讨书
2014/01/29 职场文书
十佳护士获奖感言
2014/02/18 职场文书
2015年元旦文艺汇演主持词
2014/03/26 职场文书
委托书范本
2014/04/02 职场文书
学校组织向国旗敬礼活动方案(中小学适用)
2014/09/27 职场文书
从贫穷到富有,是知识技能和学习力的差别
2019/08/20 职场文书