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 相关文章推荐
DedeCMS dede_channeltype表字段注释
Apr 07 PHP
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
Oct 12 PHP
实用PHP会员权限控制实现原理分析
May 29 PHP
PHP版网站缓存加快打开速度的方法分享
Jun 03 PHP
php smarty模板引擎的6个小技巧
Apr 24 PHP
php递归删除目录与文件的方法
Jan 30 PHP
变量在 PHP7 内部的实现(二)
Dec 21 PHP
PHP模板引擎Smarty中的保留变量用法分析
Apr 11 PHP
php版阿里云OSS图片上传类详解
Dec 01 PHP
php面向对象程序设计入门教程
Jun 22 PHP
php定期拉取数据对比方法实例
Sep 22 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 27 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
一个用php实现的获取URL信息的类
2007/01/02 PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
2013/04/23 PHP
php判断字符串在另一个字符串位置的方法
2014/02/27 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
实现web打印的各种方法介绍及实现代码
2013/01/09 Javascript
javascript匿名函数实例分析
2014/11/18 Javascript
javaScript基础语法介绍
2015/02/28 Javascript
js使用split函数按照多个字符对字符串进行分割的方法
2015/03/20 Javascript
AngularJS基础 ng-keydown 指令简单示例
2016/08/02 Javascript
详解Node.js中的事件机制
2016/09/22 Javascript
jquery实现简单的瀑布流布局
2016/12/11 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
javascript将url解析为json格式的两种方法
2017/08/18 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
2017/09/20 Javascript
nodejs简单读写excel内容的方法示例
2018/03/16 NodeJs
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
基于webpack4搭建的react项目框架的方法
2018/06/30 Javascript
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
python中合并两个文本文件并按照姓名首字母排序的例子
2014/04/25 Python
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
Python实现代码统计工具(终极篇)
2016/07/04 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
2018/01/06 Python
python 利用for循环 保存多个图像或者文件的实例
2018/11/09 Python
对python3 Serial 串口助手的接收读取数据方法详解
2019/06/12 Python
Python GUI学习之登录系统界面篇
2019/08/21 Python
Selenium使用Chrome模拟手机浏览器方法解析
2020/04/10 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
英国婴儿和儿童服装网站:Vertbaudet
2018/04/02 全球购物
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
美国工业用品采购网站:Zoro.com
2020/10/27 全球购物
2014年效能监察工作总结
2014/11/21 职场文书
二年级语文上册复习计划
2015/01/19 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
员工工作心得体会
2019/05/07 职场文书