《Python核心编程》——正则表达式学习笔记(1)

正则表达式的定义及作用

     定义:正则表达式是由字符和特殊符号组成的字符串,按照某种模式匹配一系列有相似特征的字符串。

     作用:可以进行字符串的匹配、切割、替换和获取,用于筛选符合正则表达式模式要求的字符串

正则表达式的常用符号及其描述

1.使用择一匹配符号匹配多个

       使用符号 | ),表示从“多个模式中选择一个”。例如:

                   正则表达式模式                      匹配的字符串
                       at|home                         at、home       
                     bat|bet|bit                     bat、bet、bit

 

   也称作并或者逻辑或。

2.匹配任意单个字符

     .或者:匹配除了换行符\n以外的任何字符。

                  正则表达式模式                                   匹配的字符串
 f.o                 fao、fbo、f#o、f9o等 
  ..                     任意两个字符
  .end                fend、9end、#end

如果需要匹配句号和句点字符,则需要使用反斜线转义句点符号,如“\。“

3.从字符串起始、结尾或单词边界匹配

脱字符(^)和\A:用于匹配字符串开始位置。

符号($)和\Z:用于匹配字符串末尾位置。

\b和\B:\b匹配的单词必须位于字符串首部。

             \B匹配的单词可以位于字符串任意部位。

 

                  正则表达式模式                                   匹配的字符串
 ^from                    任何以from起始的字符串 
  /bin/tcsh$
              任何以/bin/tcsh结尾的字符串
 ^sub:hi$
        任何由单独的字符串sub:hi构成的字符串

 

4.匹配特定字符

使用[ ],[ ]里面包含的字符为可以选择的任何字符。

              正则表达式模式                            匹配的字符串
               b[abcd]t
                        bat、bbt、bct、bdt     
               [cr][23][dp][o2]
                   从每个[]中分别取一个字符,如c2d2、r2po等

5.限定范围和否定

[x -y ]:用于限定范围x-y之间的取值。如[a-z]表示取a至z范围的一个字母。

[^...]:表示不匹配给定字符集的任何一个字符。

                  正则表达式模式                                   匹配的字符串
[env-y]                 'e'、'n'、'v'、'w'、'x'、'y' 
 [^aeiou]
                    一个非元音字符
 ["-a]
         在ASCII表中,位于"到a字符之间的字符

6.使用闭包操作符实现存在性和频数匹配

(*):匹配0次或多次左边的正则表达式。

(+):匹配1次或多次左边的正则表达式。

(?):匹配0次或1次左边的正则表达式。

({}):{N}匹配N次左边的正则表达式。{M,N}匹配M~N次。

 

                  正则表达式模式                                   匹配的字符串
 [dn]ot?     匹配0次或1次't',可能是do,dnot,no, not
  [0-9]{15,16}
              匹配15或者16个数字
 </?[^>]+>
        匹配全部有效(或无效)的html标签

7.表示字符集的特殊字符

\d:表示匹配任何十进制数。

\w:表示匹配全部字母和数字的字符集。相当于[A-Za-z0-9]

\s:匹配空格字符。

这些特殊字符的大写版本表示不匹配,如\D表示任何非十进制数。

 

                  正则表达式模式                                   匹配的字符串
 [A-Za-z]\w*     第一个字符是字母;其余字符可以是字母或者数字
  \w+@\w+\.com
        以XXX@YYY.com表示的简单电子邮件地址

8.使用圆括号进行分组

圆括号()的作用:(1)对正则表达式进行分组    (2)匹配子组

9.扩展表示法

(?...)作用:判断匹配之前提供标记,实现一个前视(或者后视)匹配,或者条件检查。

 

          正则表达式模式                                   匹配的字符串
(?:\w+.)*

      以句点作为结尾的字符串,例如"google."。

  (?#comment)
             此处不作匹配,只是作为注释。
 (?=.com)
           字符串后面跟着“.com”才作匹配。
(?!.net)             字符串后面不跟“.net”才作匹配。
(?<=800-)             如果字符串之前是“800-”才作匹配。
(?<!192\.168\.)            字符串之前不是“192.168.”才作匹配。
(?(1)x|y)        如果一个匹配组1存在,就与x匹配;否则与y匹配。

             

posted @ 2018-04-09 20:27  LullabyT  阅读(142)  评论(0编辑  收藏  举报