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安装攻略:常见问题解答(二)
Oct 09 PHP
adodb与adodb_lite之比较
Dec 31 PHP
php 定界符格式引起的错误
May 24 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
Jan 23 PHP
windows7下php开发环境搭建图文教程
Jan 06 PHP
Yii2 输出xml格式数据的方法
May 03 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
May 04 PHP
PHP格式化显示时间date()函数代码
Oct 03 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
Jun 17 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
Aug 06 PHP
PHP实现常用排序算法的方法
Feb 05 PHP
PHP的重载使用魔术方法代码实例详解
Feb 26 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函数解决SQL injection
2006/12/09 PHP
3种php生成唯一id的方法
2015/11/23 PHP
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
2016/04/01 PHP
laravel使用Faker数据填充的实现方法
2019/04/12 PHP
laravel框架 laravel-admin上传图片到oss的方法
2019/10/13 PHP
php的instanceof和判断闭包Closure操作示例
2020/01/26 PHP
用正则xmlHttp实现的偷(转)
2007/01/22 Javascript
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
JS性能优化笔记搜索整理
2013/08/21 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
nodejs导出excel的方法
2015/06/30 NodeJs
兼容各大浏览器的JavaScript阻止事件冒泡代码
2015/07/09 Javascript
js数组去重的方法汇总
2015/07/29 Javascript
jQuery弹出div层过2秒自动消失
2016/11/29 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
Node.js和Express简单入门介绍
2017/03/24 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
2017/09/30 Javascript
babel之配置文件.babelrc入门详解
2018/02/22 Javascript
jQuery 选择方法及$(this)用法实例分析
2020/05/19 jQuery
解决vue scoped scss 无效的问题
2020/09/04 Javascript
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
python实现感知器算法详解
2017/12/19 Python
Python中关键字global和nonlocal的区别详解
2018/09/03 Python
感知器基础原理及python实现过程详解
2019/09/30 Python
PyQt5 界面显示无响应的实现
2020/03/26 Python
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
2020/11/17 HTML / CSS
5分钟实现Canvas鼠标跟随动画背景
2019/11/18 HTML / CSS
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
Speedo速比涛德国官方网站:世界领先的泳装品牌
2019/08/26 全球购物
JAVA代码查错题
2014/10/10 面试题
爱国演讲稿400字
2014/05/07 职场文书
九华山导游词
2015/02/03 职场文书
2015年学生会个人工作总结
2015/04/09 职场文书
污染环境建议书
2015/09/14 职场文书
PyTorch 如何设置随机数种子使结果可复现
2021/05/12 Python
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript