正则表达式

     字符串是我们编程时经常用的一种数据类型,对于简单的字符串查找,使用字符串的内置方法就可以,对于比较复杂的符串或者内容经常变化的字符串,就要用到正则表达式了。

    在Python中要用正则表达式,需要导入re模块,re模块是内置模块,import导入就可使用。

    1.匹配字符串的几个方法:

     1>match方法

     match方法接收三个参数,第一个是匹配的规则,也就是正则表达式,第二个是要查找的字符串,第三个参数不是必填的,用户控制正则表达式的控制方式,根据正则表达式的匹配模式而定。

    从字符串中的第一个单词中匹配字符串,如果匹配到,返回一个对象,如果匹配不到,返回none

      

  #<_sre.SRE_Match object; span=(0, 4), match='best'>

     2>search方法

    search方法的参数与match一样,区别是,match是从字符串里的第一个单词找,而search方法则是从整个内容找,如果匹配到,返回第一个,如果匹配不到,返回none。

    字符串前面加r代表原字符串

    

#运行结果为is

    3>findall方法

     findall方法的参数上面的match、search一样,和他们不一样的是,findall会返回所有一个list,把所有匹配到的字符串,放到这个list里面,如果找不到的话,就返回一个空的list

   

   运行结果是[‘best’]

    4>sub方法

    sub方法和字符串的replace方法一样,是用来替换字符串的,把匹配到的值替换成一个新的字符串,接收3个参数,第一个是正则表达式,第二个是要替换成什么,第三个就是要      查找的字符串,会返回一个新的字符串,如果匹配不到的话,返回原来的字符串

   

   运行结果:

   

     5>split

      split 方法和字符串的split方法一样,是用来分割字符的,按照匹配到的字符串进行分割,返回的是一个list,如果匹配不到的话,那返回的list中还是原来的字符串

       

     运行结果为一个list:

       

 

     2、数量词  

          1>    '*' 匹配*号前的字符0次或多次,只是*前面的一个字符
           

         运行结果

           

          2>    '+'     匹配前一个字符1次或多次,只是+前面的一个字符

          

         运行结果:

         

          3>      '?'     匹配前一个字符1次或0次,只是?前面的一个字符

        

        运行结果:

        

          4>    '{2}'   匹配前一个字符m次

      

         运行结果:

        

          5>    '{n,m}' 匹配前一个字符n到m次

       

        运行结果:

         

      3.一般字符

         1>'.'     默认匹配除\n之外的任意一个字符

          

         运行结果

         

         2>'\'   转译符,前面的* + ?这样的字符都有特殊含义了,如果你想就想找它的话,那就得转译了。意思就是说如果你想让特殊字符失去以前的含义,那么就得给它前面加上\

         

         运行结果:

          

         3> '|'     匹配|左或|右的字符

         

         运行结果

         

         4>  '[]' 字符集合,某些字符的集合,匹配的时候是这个集合里面的任意一个就行

          

         运行结果:

         

      4.边界匹配

         1>'^'     匹配以什么字符开头,多行情况下匹配每一行的开头 ,   re.M是查询多行模式

         

         运行结果

         

        2>'$'     匹配以什么字符结尾,多行情况下匹配每一行的结尾

         

        运行结果

        

       3>'\A' 仅以什么字符开头,和^不同的是它不能用多行模式

       

       运行结果

       

      4>'\Z' 仅以什么字符结尾,和$不同的是它不能用多行模式

      

     运行结果

     

    5.预定义字符集合

      1>'\d'  匹配数字0-9

     

    运行结果:

    

    2> '\D'    匹配非数字

     

    运行结果

   

   3>  '\w'    匹配[A-Za-z0-9],也就是所有的字母和数字和中文

       

      运行结果:

      

   4> '\W' 匹配不是[A-Za-z0-9],也就是不是字母和数字

     

    运行结果:

    

    5>'\s' 匹配空白字符、\t、\n、\r,空格

   

   运行结果

  

   6>'\S'匹配非空白字符,不是\t、\n、\r,空格

   

   运行结果

  

   6分组匹配

    1> (...)' 分组匹配,把某些规则写成在一个组里,这样就可以直接对这个组进行一些匹配了

     

    运行结果:

    

   2>分组

    

    运行结果:

    

    3>findall分组

   

   运行结果

   

 

posted on 2017-06-18 23:27  国元  阅读(91)  评论(0编辑  收藏  举报

导航