Python 正则表达式

正则表达式

1、字符匹配

1.1 普通字符

      大多数字母和字符一般都会和自身匹配

      如正则表达式 test会和字符串 "test"完全匹配

1.2 元字符

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

   1) [ ]   

   --常用来表达一个字符集  

   --元字符在字符集中不起作用

   -- 补集匹配不在区间范围内的字符

   Exp:  s =' t[io]p'  t = 'top tip tep trp' re.findall(s,t) 

   Exp:  r =r 'x[0-9]x'   re.findall(r,'x3x')

  2) ^     -- 匹配行首

   。 除非设置multiline标志,它只是匹配字符串的开始。在MULTILINE模式里,它也可以直接匹配字符串中的每个换行。

    r = '^hello'   s = 'hello the world'  re.findall(r,s)   result : ['hello']

  3)$   -- 匹配行尾

    行尾被定义为要么是字符串尾,要么是一个换行字符后面的任何位置。 

   

  4)   -- 反斜杠后面可以加不同的字符以表示不同特殊意义

  5) *    --指定前一个字符可以被匹配零次或更多次,而不是只有一次。匹配引擎会试着重复尽可能多的次数。(不超过整数界定范围,20亿次)

      - a[bcd]*b -- "abcbd"

  6) +   -- 表示匹配一或更多次。

         --注意* 和 + 之间的不同; * 匹配零或更多次,所以可以根本就不出现,而+则要求至少出现一次。

       r = r"ab+"

       re.findall(r,'abbb')
       ['abbb']

  7) ?  --匹配一次或零次;你可以认为它用于标识某事物是可选的

     r = r"^010-?d{8}$"

     re.findall(r,'01012345678')

    result:['01012345678']

8){m,n} 

    -- 其中m和n是十进制整数。 该限定符的意思是至少有m个重复,至多到n个重复。

    -- 忽略m会认为下边界是0,而忽略n的结果将是上边界为无穷大(实际上是20亿)

    -- {0,}等同于 *,(1,)等同于+,而{0,1}则与?相同。 如果可以的话,最好使用 * , + ,或 ?表示。 

原文地址:https://www.cnblogs.com/monjeo/p/7798273.html