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 相关文章推荐
理解PHP5中static和const关键字的区别
Mar 19 PHP
五款常用mysql slow log分析工具的比较分析
May 22 PHP
基于php 随机数的深入理解
Jun 05 PHP
php检查字符串中是否有外链的方法
Jul 29 PHP
php去除二维数组的重复项方法
Nov 03 PHP
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
Apr 27 PHP
微信支付的开发流程详解
Sep 13 PHP
详解php中serialize()和unserialize()函数
Jul 08 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
Mar 15 PHP
php操作mongodb封装类与用法实例
Sep 01 PHP
Yii框架小部件(Widgets)用法实例详解
May 15 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脚本的10个技巧(1)
2006/10/09 PHP
php中将汉字转换成拼音的函数代码
2012/09/08 PHP
php开发中的页面跳转方法总结
2015/04/26 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
2019/03/30 PHP
JavaScript语法着色引擎(demo及打包文件下载)
2007/06/13 Javascript
jQuery总体架构的理解分析
2011/03/07 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
2015/12/04 Javascript
jQuery中attr()与prop()函数用法实例详解(附用法区别)
2015/12/29 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
2016/09/23 Javascript
原生js实现日期计算器功能
2017/02/17 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
2017/12/18 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
react中实现搜索结果中关键词高亮显示
2018/07/31 Javascript
element-ui 表格数据时间格式化的方法
2018/08/24 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
移动端(微信等使用vConsole调试console的方法
2019/03/05 Javascript
解决layer.open后laydate失效的问题
2019/09/06 Javascript
vue中注册自定义的全局js方法
2019/11/15 Javascript
ES6 proxy和reflect的使用方法与应用实例分析
2020/02/15 Javascript
Angular利用HTTP POST下载流文件的步骤记录
2020/07/26 Javascript
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
详解Python map函数及Python map()函数的用法
2017/11/16 Python
Python tkinter label 更新方法
2018/10/11 Python
如何更优雅地写python代码
2019/07/02 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
巴西电子产品购物网站:Saldão da Informática
2018/01/09 全球购物
BIBLOO波兰:捷克的一家在线服装店
2018/03/09 全球购物
酒店管理专业毕业生推荐信
2013/11/10 职场文书
关于打架的检讨书
2014/01/17 职场文书
一般党员对照检查材料
2014/09/24 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
医生学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
天下第一关导游词
2015/02/06 职场文书
八月迷情观后感
2015/06/11 职场文书
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL