Python 正则表达式

看http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html后作的一个记录。

一、正则表达式的符号:

  (1)字符:

      .  表示任意字符

      \  转义字符

      []    表示从[]中取值

  (2)预定义字符集:

      \d  数字[0-9]

      \D  非数字

      \s  空白字符 [<space>, \n\t\r\f\v]

      \S  非空白字符

      \w  字符 [A-Za-z0-9]

      \W  非字符

  (3)数量词:

      *  重复前面一个字符0-n次

      +  重复前面一个字符1-n次

      ?  重复前面一个字符0-1次

      {m} 重复前面一个字符m次

      {m, n} 重复前面一个字符m-n次,m,n可以省略一个,省略m表示0,省略n表示无限次

  (4)边界匹配:

      ^  匹配字符串的开头,在多行模式中也可匹配每一行的开头

      $  匹配字符串的结尾,在多行模式中也可匹配每一行的结尾 

      \A  仅匹配字符串的开头

      \Z  仅匹配字符串的结尾 

      \b  匹配\w与\W之间,即匹配字符的开头(不能说是开头,但是却是匹配出的字符串的开头),非字符的结尾,组合而成的字符串。如

         eg: a\b ,    在“asfq!z”中匹配,则得到的结果是"asfq"

      \B     \b的取反

   (5)逻辑与分组:

      |    取示取其中的一个 如(123|456)

      (...)   即可以将前面当成一个整体,相当于一个括号的作用,  与  “|” 合用,   分组(即可以将括号中的这一部分数据作为一个分组,输出)

      (?P<Name>... )  将“...”分组,并且命名为Name,   eg:    (?P<id>abc)xx,表示将匹配到的abc这一部分进行分组,并且命名为id

      \<Number>  表示将分组后,索引号为Number的字符 eg:    \1   表示引用编号为1所匹配到的字符串

   (6)不分组

      (?:...), 表示不将“...”的内容分组,而是当是一个整体或者用作“|”的一部分

      (?#...),表示"..."的内容将被忽略

      (?=...),表示之后的内容为“...” , eg   a(?=\d),  表示a的后面必须是数字,如  a1

       (?!...) ,  表示之后的一个字符不是“...”

      (?<=...),表示之前的一个字符是“...”

      (?<!...),表示之前的字符不匹配“...”, eg (?<!\d)a, 表示a前面不是数字才以匹配

      (?(id/name) yes_pattern | no_pattern),如果编号为id或者name的组匹配到字符,则需要匹配yes_pattern,否则则匹配no_pattern


r 放在字符串前,表示不转义

posted @ 2014-03-03 20:16  Fly Hawk  阅读(272)  评论(0编辑  收藏  举报