T4《正则表达式与异常处理》.docx
《T4《正则表达式与异常处理》.docx》由会员分享,可在线阅读,更多相关《T4《正则表达式与异常处理》.docx(11页珍藏版)》请在冰豆网上搜索。
T4《正则表达式与异常处理》
第4章《正则表达式与异常处理》
授课讲师:
衡茜
课时:
2小时
本章目标:
1.掌握POSIX正则表达式
2.掌握Perl正则表达式
3.熟练使用PHP正则表达式
4.能够处理各种异常
5.
本章重点:
1.正则表达式的使用
2.异常处理
本章难点:
1.正则表达式
回顾重点:
1.PHP数组、字符串以及相应的常用函数
2.PHP的面向对象
内容讲解:
一、POSIX风格正则表达式
(一)引入
关于正则表达式:
1.正则表达式就是描述字符串排列模式的一种自定义语法规则。
2.如果可以使用字符串处理函数完成的任务,就不要使用正则
3.有一些复杂的操作,只能使用正则完成。
4.正则表达式是由具有特殊意义的字符组成的字符串
5.正则表达式必须在函数中应用才能发挥正则表达式的作用
PHP中提供两种正则表达式及两套正则表达式函数库,其功能一致,现在较多使用的是与Perl语言兼容的perl风格正则表达式.
学习正则表达式就是学习两方面的内容,1.正则表达式编写的规则模式2正则表达式函数的应用
(二)定义/语法
POSIX风格的正则表达式由正则字符和元字符构成,二者联合构成了一个文本模式的程序描述。
因此正则表达式允许对文本内的模式和子模式进行匹配
(三)特点
1.严格区分大小写
2.由正则表达式字符(字母,逗号,数字等)和元字符(星号,括号等)构成
(四)场合
1.灵活变通地匹配、检验、替换以及修改字符串。
(五)使用
1.元字符:
有特定意义的字符
字符
含义
()
将不同的字符串组成一组,也称为子模式
[]
定义字符集合
{}
指定重复次数
^
在字符串的开始匹配或者表示不在某个字符串集合内
$
在字符串的结尾匹配
.
匹配除换行符(\n)之外的任意字符
?
重复零次或者一次
*
重复零次或者多次
+
重复一次或者多次
\
转义字符
|
或者,选择分支的标识
2.字符集:
字符的范围,可以匹配指定类型的任何字符
字符
含义
[a-z]
小写字母字符
[A-Z]
大写字母字符
[a-zA-Z]
大小写字母字符
[0-9]
数字字符
[0-9\+\-\*\\]
数字字符、加号、减号、乘号和除号
[\f\r\n\t]
空白字符
3.字符类:
预定义字符集(定义过的字符集),对整个字符范围进行指定
字符类
含义
[[:
alnum:
]]
字母字符和数字字符,等价于[a-zA-Z0-9]
[[:
alpha:
]]
字母字符,等价于[a-zA-Z]
[[:
upper:
]]
大写字母字符,等价于[A-Z]
[[:
lower:
]]
小写字母字符,等价于[a-z]
[[:
digit:
]]
数字字符,等价于[0-9]
[[:
blank:
]]
空格符和制表符
[[:
space:
]]
空白字符,包括空格、水平制表符、垂直制表符、换行、换页、回车
[[:
print:
]]
可打印字符
[[:
ascii:
]]
7位ASCII码
[[:
xdigit:
]]
十六进制字符,等价于[a-fA-F0-9]
[[:
punct:
]]
标点符号
[[:
graph:
]]
ASCII码从33~126之间可打印字符
4.量词/限定符:
指定字符必须出现的次数
字符
含义
*
重复任意次(包括零次)
+
重复一次或多次
?
重复零次或一次
{n}
重复n次,其中n上一个非负整数
{n,}
重复至少n次,其中n是一个非负整数
{n,m}
重复至少n次到m次,其中m和n均为非负整数并且m大于n
5.
二、POSIX风格正则表达式函数
(一)引入
函数名多数以ereg开头
(二)定义/语法
(三)特点
1.
(四)场合
1.
(五)使用
1.ereg()函数:
在字符串中查找与指定正则表达式模式匹配的子串
语法:
intereg(正则表达式,字符串[,])
2.split()函数:
使用正则表达式把字符串拆分为较小的块,并作为一个数组返回
3.ereg_replace()函数:
用来查找和替换子字符串。
与字符串处理函数str_replace()实现的功能相同
三、Perl正则表达式
(一)引入
Perl正则表达式英文名称为PerlCompatibleRegularExpression,缩写为PCRE。
PCRE库包括一套执行常用表达模式的函数,语法来源于Perl语言。
与POSIX正则表达式不同,Perl正则表达式需要以分隔符作为开始和结束标识。
Perl正则表达式通常使用正斜杠“/”作为定界符,Java和JavaScript中的正则表达式的写法和PHP中差不多,只是函数不同而已
(二)定义/语法
(三)特点
1.
(四)场合
1.
(五)使用
1.定界符:
需要以分隔符作为开始结束标记,通常是/(正斜杠)
2.perl修饰符:
在Perl正则表达式的最后一个分隔符/后,可以添加Perl修饰符来更改正则表达式的行为
修饰符
说明
i
忽略大小写
m
除了匹配字符串的开始和结尾还匹配其中的换行符的之后或之前
s
模式中的圆点元字符“.”匹配所有的字符
x
表达式中的空白字符将会被忽略,除非它已经被转义
D
模式中的美元元字符仅匹配目标字符串的结尾
U
和问号的作用相似(多次匹配)
3.元字符
元字符
含义
\A
匹配字符串的开头
\B
匹配除单词边界之外的任意字符
\b
匹配单词边界
\D
匹配非数字字符
\d
匹配数字字符,等价于[0-9]
\S
匹配非空白字符
\s
匹配空白字符
\W
匹配任意字母和数字
\w
匹配任意非单词字符
[]
匹配指定范围内的其中一个字符
()
用于将正则表达式和元字符或表达式进行组合
$
匹配字符串的结束
^
匹配字符串的开始
.
匹配除换行之外的任何一个字符
{x}
重复x次
{x,y}
至少重复x次,最多重复y次
{x,}
至少重复x次
*
重复0次或更多次
?
重复0次或1次
+
重复1次或多次
|
匹配其中任意一个
\
转义字符
4.啊
四、Perl正则表达式函数
(一)引入
PHP为使用Perl兼容的正则表达式提供了7个常用的函数,包括:
preg_grep()、preg_match()、preg_match_all()、preg_quote()、preg_replace()、preg_replace_callback()和preg_split()。
利用这些函数可以方便地实现对字符串的搜索与替换、分割与合并
(二)定义/语法
(三)特点
1.函数名都以以preg_开头
(四)场合
1.
(五)使用
1.preg_grep()函数:
按指定的正则表达式搜索和匹配。
其对一个数组进行匹配和搜索,搜索成功则返回匹配的数组元素
2.preg_match()函数:
按指定的正则表达式搜索和匹配一次
3.preg_split()函数:
将字符串按指定的规则进行分割,用法和split()方法非常相似,只是函数preg_split()只是使用正则表达式
总结:
POSIX及Perl区别
字符集
函数
定界符
POSIX风格正则表达式
[[:
xxx:
]]的形式,
比如[[:
alnum:
]]
多数以ereg开头
无
Perl风格正则表达式
\x的形式,比如\w
以preg开头
必须,常用/
正则表达式
优点
1.简化代码
2.可以做复杂字符串处理
缺点
1.编写维护难度较高
2.性能比字符串处理函数低
五、错误和异常处理
(一)引入
在项目开发过程中,错误和异常是不可避免的,也是任何程序
员不希望发生的。
为了尽可能多地避免类似情况,所以程
序员必备的能力之一就是如何有效地调试错误并修改错误。
PHP
中提供了许多有效方法来处理错误和异常,如错误级别控制、
错误显示控制和自定义错误等。
不仅如此,在PHP5中还针对类特
别地引入了异常处理机制,增强了PHP的错误调试功能
(二)定义/语法
(三)特点
1.常见的基本错误类型分为
1)语法错误
2)逻辑错误
3)定义错误
4)环境错误
5)运行错误
2.PHP的错误级别
名称
含义
E_ERROR
致命的运行错误,中断程序的执行
E_WARNING
运行警告,不中断程序的执行
E_PARSE
编译错误,PHP强制中止执行操作
E_STRICT
PHP版本可移植性建议
E_NOTICE
错误警告,默认情况下不输出主意信息
E_CORE_ERROR
内部错误,扩展启动失败导致的,会导致PHP运行退出。
E_CORE_WARNING
有PHP的核心产生,通常是由一个PHP扩展加载时失败引发。
PHP引擎将终止运行
E_COMPILE_ERROR
编译错误,与E_PARSE不同,这个错误会导致PHP运行退出。
E_COMPILE_WARNING
PHP编译时产生,提示用户在使用一些过时的语法。
E_USER_ERROR
用户定义错误导致PHP退出执行。
用户定义错误(E_USER_*)不是来自PHP本身,而是包含在脚本中。
E_USER_WARNING
用户定义的警告信息。
可用于脚本可能发生错误的信号。
E_USER_NOTICE
用户定义的通告可以用来在脚本中可能存在错误。
E_ALL
报告所有的错误和警告,包括上面所有的错误
3.啊
(四)场合
1.
(五)使用
1.ini_set()函数:
控制PHP错误异常报告的设置是“display_errors”。
当PHP环境中已经关闭了错误报告(display_errors=off)、在维护过程中又要立刻显示程序错误的时候,就需要用到“ini_set()”方法
ini_set("display_errors","off");//报错关闭
ini_set("display_errors","on");//报错开启
2.正则表达式函数:
当程序出现错误或者用户操作不当时,我们可以使用trigger_error()函数来触发自己定义的错误信息
3.自定义错误页面的使用:
当程序出现错误或者用户操作不当时,我们可以使用trigger_error()函数来触发自定义的错误信息
其第2个参数允许的值为:
E_USER_ERROR
E_USER_WARNING
E_USER_NOTICE
4.
六、PHP的基本异常类
(一)引入
Java及C#语言中都有trycatch用来捕获异常,同样也有Exception类,PHP中是怎么做的呢?
(二)定义/语法
(三)特点
1.
(四)场合
1.
(五)使用
1.扩展基本异常类:
PHP5支持用户使用自定义的异常处理类来扩展PHP内置的异常处理类。
对基于异常类Exception进行扩展,最普遍的方法就是通过类的继承来实现。
具体做法就是:
自定义一个子类继承于Exception类,这样子类就继承了父类的所有属性和方法,并且还可以添加子类所特有的属性和方法。
2.
本章总结:
1.正则表达式可以帮助程序员快速开发,大大减少项目代码量
2.正则表达式提高开发效率,达到事半功倍的效果
3.错误和异常处理机制可以帮助程序员快速获取项目的完美性