php正则表达式学习笔记


Posted in PHP onNovember 13, 2015

php正则表达式学习笔记分享:

1.创建正则表达式

$regex = '/\d/i';
与JavaScript中的第一个方式有点像,只是这里的话是个字符串。

 2.正则表达式中的特殊字符

特殊字符有:   . \ + * ? [ ^ ] $ ( ) { } = ! < > | : -

3.正则表达式中的函数

有8个方法,preg_match与preg_match_all,preg_replace与preg_replace_callback,preg_grep、preg_split、preg_last_error和preg_quote。 

preg_match:

执行一个正则表达式匹配

 php正则表达式学习笔记

返回 pattern 的匹配次数。 它的值将是0次(不匹配)或1次,因为preg_match()在第一次匹配后,将会停止搜索

$subject = "dd133aa2";
$pattern = '/\d+/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);

上面的示例代码加了参数“PREG_OFFSET_CAPTURE”,这样的话,在$matches中会多一个偏移数。例如下面的“2”

 php正则表达式学习笔记

preg_match_all:

执行一个“全局”正则表达式匹配

 php正则表达式学习笔记

返回完整匹配次数(可能是0),或者如果发生错误返回FALSE。

下面的代码中$subject和$pattern与上面的都一样,唯一不同的是preg_match换成了preg_match_all。

preg_match_all($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);

返回的次数是2,匹配到了两次,再看看数组$matches中的输入,有两个。比上面的多了一个。

 php正则表达式学习笔记

 preg_replace:

执行一个正则表达式的搜索和替换

php正则表达式学习笔记

如果subject是一个数组, preg_replace()返回一个数组, 其他情况下返回一个字符串。

如果匹配被查找到,替换后的subject被返回,其他情况下 返回没有改变的 subject。如果发生错误,返回 NULL。

在代码中$subject是一个数组,里面有两组字符串,接下来是将多个数字替换为大写的“Z”。

$subject = array("dd133aa2", "kk1ff3");
$pattern = '/\d+/';
$result = preg_replace($pattern, 'Z', $subject);
print_r($result);

php正则表达式学习笔记

preg_replace_callback:

执行一个正则表达式搜索并且使用一个“回调”进行替换

php正则表达式学习笔记

这个函数的行为除了可以指定一个callback替代replacement进行替换 字符串的计算,其他方面等同于 preg_replace(),包括返回的结果。

下面的代码也是替换成大写的“Z”,回调函数中每次$matches中的内容就是代码中注释的部分,第一次是133,第二次是2。

$subject = "dd133aa2";
$pattern = '/\d+/';
$result = preg_replace_callback($pattern, function($matches) {
    //$matches [0] => 133
    //$matches [0] => 2
    return 'Z';
   }, $subject);
print_r($result);

preg_grep:

返回匹配模式的数组条目

php正则表达式学习笔记

返回使用input中key做索引的数组

下面的示例代码中,在$subject数组中我加了个“ddsdfd”,里面没有包含数字,在做匹配的时候,就把这个没数字的给过滤掉了。

而$result2打印出来的正好相反,是把过滤的打印出来了,但是key还是为2,并不是0。

$subject = array("dd133aa2", "kk1ff3", "ddsdfd");
$pattern = '/\d+/';
$result = preg_grep($pattern, $subject);
$result2 = preg_grep($pattern, $subject, PREG_GREP_INVERT);
print_r($result);
print_r($result2);

php正则表达式学习笔记

preg_split:

通过一个正则表达式分隔字符串

 php正则表达式学习笔记

返回一个使用 pattern 边界分隔 subject 后得到 的子串组成的数组。

下面代码中,我将$pattern中的表达式加了括号,为了在$result2中捕获到。

$subject = "dd133aa2cc";
$pattern = '/(\d+)/';
$result = preg_split($pattern, $subject);
$result2 = preg_split($pattern, $subject, null, PREG_SPLIT_DELIM_CAPTURE);
print_r($result);
print_r($result2);

php正则表达式学习笔记

preg_last_error:

返回最后一个PCRE正则执行产生的错误代码

preg_match('/(?:\D+|<\d+>)*[!?]/', 'foobar foobar foobar');
$result = preg_last_error();//PREG_BACKTRACK_LIMIT_ERROR 调用回溯限制超出
print_r($result);

preg_quote:

转义正则表达式字符

php正则表达式学习笔记

返回转义后的字符串

下面的代码中,$subject中有两个需要转义的字符,“.”和“?”。

将$result打印出后是“dd\.a\?a2cc”,而在$result2中,多加了个参数“a”,这样的话“a”也会被转义,“dd\.\a\?\a2cc”

$subject = "dd.a?a2cc";
$result = preg_quote($subject);
$result2 = preg_quote($subject, 'a');
print_r($result);
print_r($result2);

4、模式修正符

php正则表达式学习笔记

以上就是关于php正则表达式的全部内容介绍,希望对大家的学习有所帮助。

PHP 相关文章推荐
mysql 中InnoDB和MyISAM的区别分析小结
Apr 15 PHP
PHP 程序授权验证开发思路
Jul 09 PHP
php生成随机密码的三种方法小结
Sep 04 PHP
php循环创建目录示例分享(php创建多级目录)
Mar 04 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
Apr 29 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
Jun 26 PHP
PHP实现生成唯一会员卡号
Aug 24 PHP
CodeIgniter集成smarty的方法详解
May 26 PHP
PHP+Ajax验证码验证用户登录
Jul 20 PHP
yii 2.0中表单小部件的使用方法示例
May 23 PHP
PHP中的函数声明与使用详解
May 27 PHP
PHP自动识别当前使用移动终端
May 21 PHP
php邮箱地址正则表达式验证
Nov 13 #PHP
合格的PHP程序员必备技能
Nov 13 #PHP
PHP基于yii框架实现生成ICO图标
Nov 13 #PHP
php中session定期自动清理的方法
Nov 12 #PHP
详解php设置session(过期、失效、有效期)
Nov 12 #PHP
php表单提交实例讲解
Nov 12 #PHP
php用户注册信息验证正则表达式
Nov 12 #PHP
You might like
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
2015/07/09 PHP
php判断是否连接上网络的方法实例详解
2016/12/14 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
js中几种去掉字串左右空格的方法
2006/12/25 Javascript
JavaScript.Encode手动解码技巧
2010/07/14 Javascript
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
2010/07/26 Javascript
HTML页面滚动时获取离页面顶部的距离2种实现方法
2013/09/05 Javascript
ExtJS实现文件下载的方法实例
2013/11/09 Javascript
js+div实现文字滚动和图片切换效果代码
2015/08/27 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
vue+Element实现搜索关键字高亮功能
2019/05/28 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
2020/08/28 Javascript
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
python3使用requests模块爬取页面内容的实战演练
2017/09/25 Python
Python实现PS图像抽象画风效果的方法
2018/01/23 Python
python复制列表时[:]和[::]之间有什么区别
2018/10/16 Python
python实现给微信指定好友定时发送消息
2019/04/29 Python
Python使用py2neo操作图数据库neo4j的方法详解
2020/01/13 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
2020/04/03 Python
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
夏洛特和乔治婴儿和儿童时装精品店:Charlotte and George
2018/06/06 全球购物
瑞士最大的图书贸易公司:Orell Füssli
2019/12/28 全球购物
印度在线购买电子产品网站:Croma
2020/01/02 全球购物
外贸公司实习自我鉴定
2013/09/24 职场文书
男女朋友协议书
2014/04/23 职场文书
小学秋季运动会报道稿
2014/09/30 职场文书
工程技术负责人岗位职责
2015/04/13 职场文书
幼儿园班级工作总结2015
2015/05/25 职场文书
运动会加油稿50字
2015/07/21 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书
电工实训心得体会
2016/01/14 职场文书
Python使用openpyxl模块处理Excel文件
2022/06/05 Python