PHP正则表达式&字符串处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四课:正则表达式&字符串处理
程序原理:处理数据(Web上的数据)
数据:类型字符串是程序中的一种最基本的类型 serialize
正则就是处理字符串的一种方式
处理字符串:查找、替换、删除、匹配、分割
1、正则表达式简介
正则表达式介绍
正则表达式:Regular Expression,是用于描述字符排列模式的一种语法规则。正则表达式是查找和替换、切割字符串模式的简洁和灵活的表示方法。
正则表达式的用途:
在unix(linux)系统中,可以在编辑器中使用正则表达式实现对字符的搜索及处理;各种编程语言(c/c++,perl,java,javascript)也可以使用正则表达式实现对字符的模式分割、匹配、查找及替换操作。
正则表达式早期仅用于Unix系统程序,现在已被绝大多数系统、程序所支持。
PHP支持两种风格的正则表达式函数:一种是由PCRE(Perl Compatible Regular Expression)库提供的;另一种是由POSIX(Portable Operation System Implementation for unix,UNIX可移植操作系统实现接口)扩展库提供的。前者使用以“preg_”为前缀命名的函数;后者使用以“ereg_”为前缀命名的函数。两者功能相似,只是执行效率略有差异。PERL库的函数(preg_)执行效率略高。ereg_*相关函数在php6中将不被支持(从PHP5.3.0开始已经删除),不推荐使用。
正则语法记忆、理解
PHP函数
2、正则表达式的语法规则
正则表达式描述了一种字符串的排列模式,主要用于字符串的模式分割、匹配、查找及替换等操作。正则表达式是主要由原子(普通字符,如单个英文字符、数字、特殊字符等)、元字符(有特殊功用的字符)以及模式修正字符组成。一个正则表达式中至少包含一个原子。他们各自功能和含义有所不同,下面将分别讲述正则表达式的组成元素及其语法规则。
$content = preg_split('/
元字符:特殊字符,比如^,$。
模式修正字符:i,m等。9.php
模式修正符:
模式修正符是标记在整个模式之外的.
i :模式中的字符将同时匹配大小写字母.
m :字符串视为多行.
s :将字符串视为单行,换行符作为普通字符.
x :将模式中的空白忽略.
A :强制仅从目标字符串的开头开始匹配.
D :模式中的美元元字符仅匹配目标字符串的结尾.
U :匹配最近的字符串.
2.1普通转义字符
普通转义字符是一种原子。正则表达式所使用的普通转义字符见下表:
原子说明
\d匹配一个数字;等价于[0-9]
\D匹配除数字以外任何一个字符;等价于[^0-9] ;\d取反
\w匹配一个英文字母、数字或下划线;等价于[0-9a-zA-Z_]
\W匹配除英文字母、数字和下划线以外任何一个字符;等价于[^0-9a-zA-Z_]
\s匹配一个空白字符;等价于[ \f\n\r\t\v]。包括空格。
\S匹配除空白字符以外任何一个字符;等价于[^ \f\n\r\t\v]
\f 匹配一个换页符;等价于\x0c 或\cL
\n匹配一个换行符;等价于\x0a 或\cJ
\r匹配一个回车符;等价于\x0d 或\cM
\t匹配一个制表符;等价于\x09 或\cI
\v 匹配一个垂直制表符;等价于\x0b 或\cK
\oNN 匹配一个八进制数字
\xNN 匹配一个十六进制数字
\cC 匹配一个控制字符
参考1.php
2.2 字符类(字符集)和范围:
任何包含在方括号[]中的内容都是一个字符类——一个被匹配字符所属的字符
集合。"[]"中存放一组原子,彼此地位平等,且仅匹配其中的一个原子。
例:
[abc]表示匹配a或b或c中的一个
[a-z]表示所有a到z之间的字符中的一个
[A-Z]匹配所有大写字母中的一个
[a-zA-Z]表示任何的大小写字母中的一个
[^a-z]匹配任何不在a到z之间的字符(^表示否)
[0-9]匹配所有的数字 \d
[0-9.-]匹配所有的数字,点号和减号
注意:
a.[]中的内容只表示一个字符。被匹配的文本中只要有[]中的任何一个字符,就匹配成功。
b.当把^放在方括号里面第一个位置时,表示否;如果^在方括号中的其他位置,表示是一个字符^。当^在[]中的第一个位置时,如果要匹配它本身,要用\转义。当该符号用在方括号外面时,一般表示正则表达式的开始。
c.当-不在a和z,A和Z,0和9之间,单独出现时,表示是一个字符-。
d.在[]中的特殊符号,不用转义。但是几个特殊字符除外:] 要转义,^在第一个位置要转义,反斜杠\,-要转义。三个反斜杠\代表一个\(4个也代表一个反斜杠)。
参考2.php
var_dump(preg_match_all('/[^a^\]]/', '33]3anba',$t)); //非a非]
2.3 重复匹配
重复
* 表示这个模式可以被重复0次,1次或多次 a{0,}
+ 表示这个模式可以被重复1次或多次 a{1,}
? 表示这个模式可以被重复0次或1次 a{0,1}
计数
{5} 表示匹配5次
{2,} 表示至少匹配2次
{0,5} 表示至多匹配5次(不能写成{,5})
{2,5} 表示最少匹配2次,最多匹配5次
注:,后面不能有空格
参考3.php
2.4 开始或结尾
^ (或\A)用于正则表达式的开始
$ (或\Z)用于正则表达式的结尾
例:
^andy 表示在字符串开始处是 andy
.cn$ 表示在字符串结尾处是 .cn