码迷,mamicode.com
首页 > 编程语言 > 详细

Python 正则表达式

时间:2017-11-07 12:13:50      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:指定   范围   意思   表达式   开始   bcb   line   多次   不同的   

正则表达式

 

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}则与?相同。 如果可以的话,最好使用 * , + ,或 ?表示。 

 

Python 正则表达式

标签:指定   范围   意思   表达式   开始   bcb   line   多次   不同的   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!