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中检查PHP文件是否有语法错误的方法
Dec 23 PHP
PHP 巧用数组降低程序的时间复杂度
Jan 01 PHP
php开发环境配置记录
Jan 14 PHP
php中通过正则表达式下载内容中的远程图片的函数代码
Jan 10 PHP
PHP的preg_match匹配字符串长度问题解决方法
May 03 PHP
PHP中使用TCPDF生成PDF文档实例
Jul 01 PHP
PHP实现从远程下载文件的方法
Mar 12 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
Feb 23 PHP
深入理解PHP中的count函数
May 31 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
Feb 08 PHP
PHP数据库操作二:memcache用法分析
Aug 16 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
May 08 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
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
php判断IP地址是否在多个IP段内
2020/08/18 PHP
接收键盘指令的脚本
2006/06/26 Javascript
HTML中不支持静态Expando的元素的问题
2007/03/08 Javascript
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
javascript 常用代码技巧大收集
2009/02/25 Javascript
jQuery 性能优化指南(3)
2009/05/21 Javascript
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
jquery插件制作 自增长输入框实现代码
2012/08/17 jQuery
JSON辅助格式化处理方法
2013/03/26 Javascript
jQuery实现HTML5 placeholder效果实例
2014/12/09 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
Node.js connect ECONNREFUSED错误解决办法
2016/09/15 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
分析javascript中9 个常见错误阻碍你进步
2017/09/18 Javascript
JS实现合并json对象的方法
2017/10/10 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
vue中的数据绑定原理的实现
2018/07/02 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
2018/12/13 Javascript
[00:59]PWL开团时刻DAY7——我在赶
2020/11/06 DOTA
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
2016/09/19 Python
Python使用Pickle库实现读写序列操作示例
2018/06/15 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
django 模型字段设置默认值代码
2020/07/15 Python
CSS3 渐变(Gradients)之CSS3 径向渐变
2016/07/08 HTML / CSS
Notino芬兰:购买香水和化妆品
2019/04/15 全球购物
信息管理专业推荐信
2013/10/29 职场文书
幼儿园家长评语
2014/02/10 职场文书
公司担保书格式范文
2014/05/12 职场文书
工程承包协议书范本
2014/09/29 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
css3带你实现3D转换效果
2022/02/24 HTML / CSS
使用Canvas绘制一个游戏人物属性图
2022/03/25 Javascript
mysql 8.0.27 绿色解压版安装教程及配置方法
2022/04/20 MySQL