简述正则表达式的语法规则(二)

来源:互联网 发布:淘宝脸部识别支付 编辑:程序博客网 时间:2024/05/17 19:22

一、前序

       前一篇我们说到了正则表达式的4大模板组成部分中的定界符和原子,下面我们继续昨天的茬,探讨下接下来的元字符和修正符。

二、元字符

  下面分为几类进行说明:

   (1)限定符:在正则表达式中,若要限制给定原子的出现的次数,则应该使用限定符。

        限定符主要有"*"、“+”、“?”、“{n}”、“{n,}”、“{n,m}”共六种。

       其中"*"、"+"、"{n,}"三个被称为贪婪限定符,也就是说这三位会经可能多的匹配能匹配的文字。"?"表示最多匹配1次,“{n}”表示前一个原子必须出现n次,"{n,m}"表示前一个原子至少出现n次或者最多出现m次。

 示例:

   '/ab{2,3}c/'      可以匹配abc、abbc

(2)边界限制:限制字符串的边界范围,使得结果更准确。

边界限制符主要有四种:"^(等同于\A)"、"$(等同于\Z)"、“\b”、“\B”

"^(等同于\A)":限定开始字符串

"$(等同于\Z)":限定结束字符串

"\b":限定字符串种单词前或后必须有边界,即有空格等

"\B":与""\b恰好相反,即前或后必须没有边界

示例:

'/^ksk|ksk$/'     以ksk开始的字符串或者以ksk结束的字符串

'/\bks\B/'    ksk为匹配字符串

(3)句号(.)的限定

句号可以包含任何一个字符,但注意不包括换行符。

如果句号只是像上面所说的那样匹配一个字符,那使用率有限,我们可以和其他限定符配合使用,如".*?"或者".+?"表示任何字符串(除了换行符)

示例:'/a.*?b/'

(4)模式选择符(|)

"|"表示或的含义,即匹配任意一组即可

示例:‘/aa|bb|cc/’

(5)模式单元

模式单元是使用元字符"()"讲多个原子组成一个大的原子,然后被当成为一个单元使用。

模式单元的优先级较高。

示例:

'/(dd)*ksk/'      匹配ddksk、ddddksk etc.

(6)后向引用

后向引用者,即使用"\1"、”\2“....等形式,分别代表第一个模式单元、第二个模式单元等以此类推所对应的内容

示例:'/(dd)(ksk)\\1KQ\\2KHY/'   匹配ddkskddKQkskKHY

注意:模式单元会被存储到对应的缓冲区中,然后通过"\1"、"\2"等进行匹配。

三、修正符

修正符是出现在最后一个"/"之后,其中常用的修正符有:"i"、"m"、”s“、”x“、”c“、”U“等

示例:

'/aa/i'    匹配aa、Aa、AA、aA   (i为ignore的意思,即忽略大小写的意思)

'/dd ksk/ix'    匹配ddksk    ddKSK等   (即忽略大小写和空格)