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简单的分页过程与原理
Jul 14 PHP
for循环连续求和、九九乘法表代码
Feb 20 PHP
PHP遍历数组的几种方法
Mar 22 PHP
php 模拟POST提交的2种方法详解
Jun 17 PHP
php三维数组去重(示例代码)
Nov 26 PHP
PHP中redis的用法深入解析
Feb 20 PHP
ThinkPHP多表联合查询的常用方法
Mar 24 PHP
php检测mysql表是否存在的方法小结
Jul 20 PHP
PHP 断点续传实例详解
Nov 11 PHP
PHP实现验证码校验功能
Nov 16 PHP
简单实用的PHP文本缓存类实例
Mar 22 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
Oct 03 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中call_user_func_array()函数的用法演示
2012/02/05 PHP
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
jquery实现excel导出的方法
2013/04/04 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
javascript按位非运算符的使用方法
2013/11/14 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
IE8中动态创建script标签onload无效的解决方法
2014/12/22 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
js for循环倒序输出数组元素的实例
2017/03/01 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
JavaScript模拟实现封装的三种方式及写法区别
2017/10/27 Javascript
js设置随机切换背景图片的简单实例
2017/11/12 Javascript
javaScript字符串工具类StringUtils详解
2017/12/08 Javascript
如何开发出更好的JavaScript模块
2017/12/22 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
深入理解js A*寻路算法原理与具体实现过程
2018/12/13 Javascript
vue 实现websocket发送消息并实时接收消息
2019/12/09 Javascript
浅谈Python黑帽子取代netcat
2018/02/10 Python
浅谈Python的list中的选取范围
2018/11/12 Python
python getpass实现密文实例详解
2019/09/24 Python
python 动态调用函数实例解析
2019/10/21 Python
使用PyTorch实现MNIST手写体识别代码
2020/01/18 Python
Python页面加载的等待方式总结
2021/02/28 Python
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
债务纠纷委托书
2014/08/30 职场文书
夫妻双方自愿离婚协议书怎么写
2014/12/01 职场文书
二手房购房意向书
2015/05/09 职场文书
2015国庆66周年宣传语
2015/07/14 职场文书
公司行政管理制度范本
2015/08/05 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
Python利用Turtle绘制哆啦A梦和小猪佩奇
2022/04/04 Python