PHP正则表达式中的元字符

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

假设我们需要在一个字符串中查找he,我们可以使用正则he,这是最简单的正则表达式,它会精确地匹配这样的字符串:有两个字符组成,前一个字符是h后一个字符是e。一般情况下,处理正则表达式的工具会提供一个忽略大小写的选项,如果选择了,这个表达式就可以匹配he、HE、He、hE这四种情况的任意一种,但是呢,还有一个问题就是很多单词会包含he这两个连续的字符,像her、heat等,我们如果要精准的来查找的话,可以使用\bhe\b这种方式,\b是正则表达式规定的一个特殊的代码,代表单词的开头或者结尾,也就是单词的分界处,虽然英文单词是由空格,标点符号或者换行来分隔,但是\b并不匹配这些单词分隔字符的任意一个,它只是匹配一个位置。

\b匹配位置的精确说法就是,前一个字符和后一个字符不全是(一个是,一个不是或者不存在)。

再比如我们要查找he后面不远处跟着一个is,可以使用\bhe\b.*\bis\b表达式,在这里的.就是元字符,可以匹配除了换行符以外的任何字符,*同样是元字符,不过它代表的不是字符,也不是位置,而是数量,它指定*前面的内容可以连续重复使用任意次,使得整个表达式可以得到匹配,因此,当.和*放在一起,就意味着任意数量的,不包含换行符的字符,这样来看的话,上述的正则表达式就可以来解读了,它的意思就是,先是一个单词he,完事跟着任意个任意字符(但是不包含换行符),最后是is这个单词。

元字符(meta character)是正则表达式中具有特殊意义的专用字符,用来规定其前导字符(也就是位于元字符前面的字符)在目标对象中的出现模式,因为具体的大家都了解的差不多,咱就不废话了啊。

先来通过几个小例子感受下正则的魅力呗:

1、匹配以字母a开头的单词

\ba\w*\b,这个表达式的意思是,先是某个单词开始处\b,完事是字母a,接着就是任意数量的字母或者数字(\w*),最后是单词的结束处(\b),匹配的单词类似于action,a等。

2、匹配一个或者更多连续数字

\d+,这个表达式可匹配0、1、333等,这里的元字符+和*类似,不同的是*匹配的是重复任意次(可能是0次),+匹配重复1次或者更多次。

3、匹配刚好6个字符的单词

\b\w{6}\b,这个表达式可匹配action、123456、set_up等类型的单词,我们要注意,正则里的单词表示的是不少于一个的连续字母和数字。

4、匹配中国部分地区电话号码

0\d\d-\d\d\d\d\d\d\d\d,这个表达式匹配以0开头后面两个数字,完事跟着-之后就是8个数字,类似于012-12345678,在这个表达式中\d是元字符,匹配数字,-是连字符,只是匹配它本身,上述表达式可优化为,0\d{2}-\d{8}。

元字符中有两个用来匹配位置,其中^使用来匹配字符串开始的位置,$是用来匹配字符串结束的位置,这两个字符与\b有点类似,在验证输入内容是非常有用,比如我们可以用来验证输入的QQ号码,使用^\d{5,11}$表达式,这里的{5,11}表示的是重复次数不能少于五次,同时也不能多于11次,因为使用了^$,所以呢,整个字符串,都要与这个表达式匹配,也就是说,这个字符串只能由5个到11个数字组成。

.是使用频率最高的元字符了,就比如我们在页面抓取的时候,要匹配div里面的内容,就需要使用到.,匹配title标签里的所有内容就可以使用<title>.*<\/title>表达式。

再来就涉及到了量词这个概念了,像之前表达式\d+,\d{5,11}都是用了量词,在这里我们需要注意的就是*和?这两个量词的区别了,具体的大家都了解,咱就是提个醒,就不过多的赘述了。

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

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

猜你喜欢

转载自blog.csdn.net/luyaran/article/details/84782924
今日推荐