PHP正则表达式基础之认识正则表达式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/luyaran/article/details/84772503

正则表达式是我们平常在程序开发过程中经常用到的一种工具,有关于它的起源以及除程序之外的应用场景咱就不赘述了,咱们只看它在程序中是如何来应用的。

这个正则表达式在我们程序中通常是把它当做一种模式去匹配一类字符串,通俗地讲,就是用一个字符串描述一个特征,完事验证另外一个字符串是否符合这个特征的公式。你像ab+描述的特征就是一个a后面加上无数个b,类似于abb、abbbbb都是符合这个特征的,但是类似于add、addddd就是不符合这个特征的。

正则可以应用到各个方面,常用的高级编辑器如vim等,几乎都支持正则表达式,在编程语言中,更是得到大规模的推广,你看,现在的语言大部分都是原生的,所以都可以从语法上支持,尤其是在Perl的推动下,更是使得各种语言都支持了正则,不支持的,也可以通过一些包来扩展支持,最适合正则的现在应该是Perl和.net,而JavaScript就比较次了。

正则怎么说呢,看起来总是怪怪的,令人望而生畏,实际上正则的实现有多种引擎(如非确定性有穷自动机NFA,确定性有穷自动机DFA),不同语言的正则语法大同小异,其表现又有多种风格,咱们来看下PHP中的两套正则函数,两者功能相似:

1、由PCRE库提供的函数,以preg_为前缀命名

PCRE(Perl compatible regular expression,兼容prel的正则表达式)由Philip Hazel于1997年开发,现代的编程软件和语言中,一般都使用PCRE库。

2、由POSIX扩展提供的函数,以ereg_为前缀命名

POSIX(portable operating system interface of Unix,Unix可移植操作系统接口)由一系列规范构成,定义了Unix操作系统应该支持的功能。自PHP5.3之后就不再使用POSIX正则函数库,若使用,则会报deprecated级别的错误,其实使不使用本质上没有差别,有差别的只是表现形式、语法、扩展功能等方面。

我们在Windows资源管理器中查找文件或者批处理文件的时候,会使用通配符?或者*表示匹配一组字符,这和正则表达式类似,在正则中?表示一个不确定的字符,*表示任意多个不确定字符,我们来看下Windows中删除本地垃圾文件批处理的部分代码:

是什么鬼,你知道么,反正我不知道,不过我们要注意的是咱们这里的?和*叫做通配符,而不是正则表达式,在PHP中,一个正则表达式包含三个部分,即分隔符、表达式、修饰符。

分隔符呢,可以是除了字母、数字、反斜线、空白字符以外的任何字符(如/、!、#、|、~),我们经常使用的事正斜线/,hash符号(#),以及取反符号(~),我们考虑到可读性,为了避免和反斜线混淆,所以一般不使用正斜线做分隔符。

表达式就是由一些特殊字符和非特殊字符的字符串组成,像[a-z0-9_--]+@[a-z0-9_.]这种表达式,可以匹配一个简单的电子邮件字符串。

而最后的修饰符就是用于开启或者说关闭某种功能或者说模式。

咱们后期测试正则的话可以在站长之家来测试。

好啦,本次记录就到这里了。

如果感觉不错的话,请多多点赞支持哦。。。

猜你喜欢

转载自blog.csdn.net/luyaran/article/details/84772503