PHP整理笔记八正则表达式

一.正则表达式语法(Perl风格)

Perl一直被认为是最伟大的解析语言之一,它提供了一种全面的正则表达式,即使是最复杂的字符串模式,也可以用这种正则表达式语言搜索和替换。PHP开发人员认识到,与其重新发明正则表达式,不如让PHP用户直接使用声名赫赫的Perl正则表达式语言,即Perl风格的函数。

模式规则:/php/  在字符串前后加上两条斜杠即可。

匹配函数:preg_match()函数在字符串中搜索模式,如果存在则返回true,否则返回false。

<?php

preg_match(‘/php/‘,‘php123‘); //返回1 模式匹配

?>

 

二.正则表达式中的元素

正则表达式中包含三种元素分别为:量词、元字符、修饰符

量词


语法


描述


+


匹配任何至少包含一个前导字符串


*


匹配任何包含零个或多个前导字符串


?


匹配任何包含零个或一个前导字符串


.


匹配任意字符串


{x}


匹配任何包含x个前导字符串


{x,y}


匹配任何包含x到y个前导字符串


{x,}


匹配任何包含至少x个前导字符串


$


匹配字符串的行尾


^


匹配字符串的行首


|


匹配字符串的左边或者右边


()


包围一个字符分组或定义个反引用,可以使用\1\2提取

元字符


语法


描述


[a-z]


匹配任何包含小写字母a-z的字符串


[A-Z]


匹配任何包含大写字母A-Z的字符串


[0-9]


匹配任何包含数字0-9的字符串


[abc]


匹配任何包含小写字母a、b、c的字符串


[^abc]


匹配任何不包含小写字母a、b、c的字符串


[a-zA-Z0-9_]


匹配任何包含a-zA-Z0-9和下划线的字符串


\w


匹配任何包含a-zA-Z0-9和下划线的字符串(同上)


\W


匹配任何没有下划线和字母数字的字符串


\d


匹配任何数字字符,和[0-9]相同


\D


匹配任何非数字字符,和[^0-9]相同


\s


匹配任何空白字符


\S


匹配任何非空白字符


\b


匹配是否到达了单词边界


\B


匹配是否没有达到单词边界


\


匹配正则中的特殊字符

修饰符


语法


描述


i


完成不区分大小写的搜索


m


在匹配首内容或者尾内容时候采用多行识别匹配


x


忽略正则中的空白


A


强制从头开始匹配


U


禁止贪婪匹配 只跟踪到最近的一个匹配符并结束

 

三.Perl风格函数

PHP为使用Perl兼容的正则表达式搜索字符串提供了7个函数,包括:preg_grep()、preg_match()、preg_match_all()、preg_auote()、preg_replace()、preg_replace_callback()和preg_split()。

搜索字符串:preg_grep()函数搜索数组中的所有元素,返回由与某个模式匹配的所有元素组成的数组。

<?php

$language = array(‘php‘,‘asp‘,‘jsp‘,‘python‘,‘ruby‘);

print_r(preg_grep(‘/p$/‘,$language));

?>

搜索模式:preg_match()函数在字符串中搜索模式,如果存在则返回true,否则返回false。

<?php

echo preg_match(‘/php[1-6]/‘,‘php5‘);

?>

电子邮件验证小案例(分组应用)

<?php

$mode = ‘/([\w\.\_]{2,10})@(\w{1,}).([a-z]{2,4})/‘;

$string = ‘[email protected]‘;

echo preg_match($mode,$string);

?>

匹配模式的所有出现:preg_match_all()函数在字符串中匹配模式的所有出现,然后将所有匹配到的全部放入数组。

<?php

preg_match_all(‘/php[1-6]/‘,‘php5sdfphp4sdflljkphp3sdlfjphp2‘,$out);

print_r($out);

?>

定界特殊的正则表达式:preg_quote()在每个对于正则表达式语法而言有特殊含义的字符前插入一个反斜线。这些特殊字符包含:$ ^ * () + = {} [] | \\ : <>。

<?php

echo preg_quote(‘PHP的价格是:$150‘);

?>

替换模式的所有出现:preg_replace()函数搜索到所有匹配,然后替换成想要的字符串返回出来。

<?php

echo preg_replace(‘/php[1-6]/‘,‘python‘,‘This is a php5,This is a php4‘);

?>

ubb小案例:贪婪问题+分组使用()

<?php

$mode = ‘/\[b\](.*)\[\/b\]/U‘;

$replace = ‘<strong>\1</strong>‘;

$string = ‘This is a [b]php5[/b],This is a [b]php4[/b]‘;

echo preg_replace($mode,$replace,$string);

?>

以不区分大小写的方式将字符串划分为不同的元素:preg_split()用来分割不同的元素。

<?php

print_r(preg_split(‘/[\[email protected]]/‘,‘[email protected]‘));

?>

注:目前为PHP使用POSIX风格的正则表达式搜索字符串提供了7个函数,包括:ereg()、ereg_replace()、eregi()、eregi_replace()、split()、spliti()和sql_regcase()。

PS:和Perl风格基本相同,可以参考手册自行学习。

时间: 2024-11-07 02:41:18

PHP整理笔记八正则表达式的相关文章

jQuery整理笔记八----jQuery的Ajax

Ajax,我一直读的是"阿贾克斯",据当时大学老师讲该读音出处是根据当年风靡欧洲的荷兰足球俱乐部阿贾克斯的名字来的,我觉得说法挺靠谱的. jQuery封装了Ajax的交互过程,用户不需要考虑XMLHttpRequest对象的兼容性问题以及使用XMLHttpRequest建立连接.发送请求.发送方式.接收方式等细节,利用jQuery定义 的几个简单方法,即可轻松实现客户端与服务端异步通信的问题,从而帮助开发人员从繁琐的技术细节中解脱出来,专心于业务层开发工作. 最初始的JavaScrip

python学习笔记八——正则表达式

1.元字符 []-常用来指定一个字符集:[abc];[a-z] -元字符在字符集中不起作用:[akm$] -补集匹配不在区间范围内的字符:[^5] ^-匹配行首 $-匹配行尾 \-后可加不同字符以表示不同意义,也可用于取消所有元字符 \d 匹配任何十进制数,相当于[0-9] \D 匹配任何非数字字符,相当于[^0-9] \s 匹配任何空白字符,相当于[\t\n\r\f\v] \S 匹配任何非空白字符 \w 匹配任何字母数字字符 \W 匹配任何非字母数字字符 *-匹配前一个字符零次或多次 +-至少

jQuery整理笔记目录

jQuery整理笔记目录 jQuery整理笔记一----jQuery开始 jQuery整理笔记二----jQuery选择器整理 jQuery整理笔记三----jQuery过滤函数 jQuery整理笔记四----jQuery操作DOM jQuery整理笔记五----jQuery事件 jQuery整理笔记六----jQuery动画 jQuery整理笔记七----几个经典表单应用 jQuery整理笔记八----jQuery的Ajax jQuery整理笔记九----功能性表格开发 jQuery整理笔记目

jQuery整理笔记文件夹

jQuery整理笔记文件夹 jQuery整理笔记一----jQuery開始 jQuery整理笔记二----jQuery选择器整理 jQuery整理笔记三----jQuery过滤函数 jQuery整理笔记四----jQuery操作DOM jQuery整理笔记五----jQuery事件 jQuery整理笔记六----jQuery动画 jQuery整理笔记七----几个经典表单应用 jQuery整理笔记八----jQuery的Ajax jQuery整理笔记九----功能性表格开发

[设计模式整理笔记 一] 基础知识

[设计模式整理笔记 一] 基础知识 [导读] [设计模式整理笔记 一] 基础知识 [设计模式整理笔记 二] 简单工厂模式(Simple Factory) [设计模式整理笔记 三] 工厂模式(Factory) [设计模式整理笔记 四] 抽象工厂模式(Abstract Factory) [设计模式整理笔记 五] 创建者模式(Builder) [设计模式整理笔记 六] 工厂模式与创建者模式总结 [设计模式整理笔记 七] 原型模式(ProtoType) [设计模式整理笔记 八] 单例模式(Singlet

xmpp整理笔记:用户网络连接及好友的管理

xmpp中的用户连接模块包括用户的上线与下线信息展现,用户登录,用户的注册: 好友模块包括好友的添加,好友的删除,好友列表的展示. 在xmpp中 负责数据传输的类是xmppStream,开发的过程中,针对不同的传输内容,会调用不同的代理方法,在使用XMPPFramework开发时,只需要在不同的代理方法中,填写相同的代码即可. 往期回顾: xmpp整理笔记:xmppFramework框架的导入和介绍  http://www.cnblogs.com/dsxniubility/p/4307057.h

Perl语言学习笔记 9 正则表达式处理文本

1.替换 s/PATTERN/REPLACE/; #返回是否替换成功的布尔值 可以使用捕获变量,如:s/(\w)/$1/ 匹配失败则不做任何处理 2.定界符 对于没有左右之分的定界符,重复三次即可,如:s///.s### 对于有左右之分的定界符,需使用两对,一对包含模式,一对包含替换字符串,这两对可以不一样,如:s{}{}.s[]{}.s<>[] 3.可选修饰符 /g可进行全局替换,替换所有匹配到的字符串,如:s/ / /g /s:使得 . 匹配所有字符 /i:大小写无关 4.绑定操作符 $f

老男孩培训视频听课笔记八(在51cto上听的)--5.8 64bit 基础优化

windows user: administrator guest port 3389 Linux user:root 普通用户很多 Port :22 更改ssh登录配置: 位置: /etc/ssh/ssh_config-client 配置 /etc/ssh/sshd_config --服务器端的配置 修改:第一步,备份服务器端的配置   第二步,编辑--说明 #--注释说明 图:   /etc/init.d – yum /rpm 安装的软件全部在这有启动命令 修改后不能登录,用图标来解释如何判

angular学习笔记(八)

本篇介绍angular控制视图的显示和隐藏: 通过给元素添加ng-show属性或者ng-hide属性来控制视图的显示或隐藏: ng-show: 绑定的数据值为true时,显示元素,值为false时,隐藏元素 ng-hide: 绑定的数据值为true时,隐藏元素,值为false时,显示元素 (其实只要用到其中一个就可以了) 下面来看个简单的例子,点击按钮可以显示/隐藏元素: <!DOCTYPE html> <html ng-app> <head> <title>