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 相关文章推荐
Win2000+Apache+MySql+PHP4+PERL安装使用小结
Oct 09 PHP
我的论坛源代码(六)
Oct 09 PHP
php 小乘法表实现代码
Jul 16 PHP
php中将一个对象保存到Session中的方法
Mar 13 PHP
PHP关联数组实现根据元素值删除元素的方法
Jun 26 PHP
使用PHP编写发红包程序
Jul 22 PHP
PHP实现加强版加密解密类实例
Jul 29 PHP
PHP和C#可共用的可逆加密算法详解
Oct 26 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
Dec 14 PHP
php 截取GBK文档某个位置开始的n个字符方法
Mar 08 PHP
PHP工厂模式的日常使用
Mar 20 PHP
PHP中通过getopt解析GNU C风格命令行选项
Nov 18 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利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
PHP网页缓存技术优点及代码实例
2020/07/29 PHP
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
2010/02/07 Javascript
window.onload和$(function(){})的区别介绍
2013/10/30 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
判断是否存在子节点的实现代码
2016/05/18 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
详解RequireJs官方使用教程
2017/10/31 Javascript
使用node.js实现微信小程序实时聊天功能
2018/08/13 Javascript
JavaScript学习笔记之数组基本操作示例
2019/01/09 Javascript
在elementui中Notification组件添加点击事件实例
2020/11/11 Javascript
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
[05:10]2014DOTA2国际邀请赛 通往胜利之匙赛场探秘之旅
2014/07/18 DOTA
在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例
2019/01/29 Python
PyQt5实现简易计算器
2020/05/30 Python
详解Python3中setuptools、Pip安装教程
2019/06/18 Python
Python从入门到精通之环境搭建教程图解
2019/09/26 Python
详解Python3中的 input() 函数
2020/03/18 Python
Pytorch转tflite方式
2020/05/25 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
你应该知道的30个css选择器
2014/03/19 HTML / CSS
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
松下电器美国官方商店:Panasonic美国
2016/10/14 全球购物
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
Elizabeth Gage官网:英国最好的珠宝设计之一
2020/09/26 全球购物
新加坡第一的杂货零售商:NTUC FairPrice
2020/12/05 全球购物
PHP如何对用户密码进行加密
2014/07/31 面试题
前台文员职责范本
2014/03/07 职场文书
档案保密承诺书
2014/06/03 职场文书
个人四风问题对照检查材料
2014/09/26 职场文书
商品陈列协议书
2014/09/29 职场文书
四风问题个人剖析材料
2014/10/07 职场文书
2015幼儿园新学期寄语
2015/02/27 职场文书
农村婚庆主持词
2015/06/29 职场文书
Python re.sub 反向引用的实现
2021/07/07 Python