简单模式

作者: 皮修猪 | 来源:发表于2018-04-12 14:50 被阅读0次

    1、字符匹配

    元字集

    . ^ $ * + ? { [ ] \ | ( )


      首先看的是 “[” 和 “]” ,其用来表示一个字符集。字符可以单个表示,也可以用 - 来连接字符来表示一个范围。如:[a,b,c,d,e]等价于[a-e]。另一个特性:  [^5] 表示匹配除了5以外的任意字符。

    最重要的字符就是 \ ,在python中,可以在反斜杠后面加字符来表示特殊的含义。如,可以用 \\ 和 \[ 来匹配  \ 和 [ 。下面是一些预定义好的一些特殊字符:

    \d 匹配任何十进制数;它相当于类 [0-9]。

    \D 匹配任何非数字字符;它相当于类 [^0-9]。

    \s 匹配任何空白字符;它相当于类 [ \t\n\r\f\v]。

    \S 匹配任何非空白字符;它相当于类 [^ \t\n\r\f\v]。

    \w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。

    \W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]。

    2、重复

      首先,讨论的是 “ * ”,*并不匹配*,而是表示*前面的字符会出现零次或者多次(>=1)。

    如liy*ao,将会匹配"liao"出现(y出现0次)liao、(y出现1次)liyao、(y出现2次)liyyao等等。

    像*这样的匹配模式成为贪婪模式,会尽可能的去更多的匹配。如果模式后面的没有被匹配,那么匹配引擎会退回,并尽可能的少匹配。如

    另一个重复的字符是 +,表示匹配一次或者多次。注意 *是零次或者更多次。

    还有其他的限定符,如 ? 。表示匹配一次或者零次;可以理解为事物是可选的,如home-?brew,可以匹配homebrew 或者 home-brew。

    还有更复杂的限定符:{m,n},注意m、n之间不能有空格。其中 m 和 n 是十进制的整数。表示至少m次重复,至多n次重复。如a\{1,3}b,会匹配出,a\b , a\\b , a\\\b 这三种情况。m 和 n是可以省略的,省略m表示下限为0,省略n上线为无穷大(其实为20亿,近似为无穷大)。不难发现,{0,}=* ; {1,}=+ ; {0,1}=?。

    相关文章

      网友评论

        本文标题:简单模式

        本文链接:https://www.haomeiwen.com/subject/epxtkftx.html