python正则表达式

一、元字符

  .  匹配任意字符(不包括换行符)
  ^  匹配开始位置,多行模式下匹配每一行开始
  $  匹配结果位置,多行模式下匹配每一行结尾
  *  匹配前一个元字符0到多次
  +  匹配前一个元字符1到多次
  ? 匹配前一个元字符0到1次
  {m,n} 匹配前一个元字符m到n此
  |  或,匹配|左右表达式任意一个
  [] 字符集,对应位置可以是字符集中的任意一个
  () 分组,从左到右每遇到一个编号+1
  \d 匹配数字
  \D 匹配非数字
  \w 匹配字母和数字
  \W 匹配非英文字母和数字
  \s 匹配空白字符
 
  特殊分组:原本分组只是从左到右编号+1,特殊分组可对分组添加别名
  (?P<name>) 未分组添加别名name
  (?P=name)  在使用分组别名对分组进行匹配

 

二、模式

  1、忽略大小写  I

1 a = 'Hello Python'
2 regex = re.compile('hello world',re.I)
3 regex.match(a) 

  2、多行模式  M

1 a = ''' sfasdf
2 ghdfg
3 sgsdfg'''
4 regex = re.compile('^ s',re.M)
5 regex.match(a).group()

三、re内置函数

   1、compile(pattern,flags=0)    

      pattern:用来匹配的字符串
      flags:定义匹配使用的模式。如re.I忽略大小写
      作用:编译正则表达式模式,返回一个对象模式(常用的表达式使用其编译后可提高效率)。

   2、match(parttern,string,flags=0)

     string:被匹配的字符串
     作用:从被匹配的字符串左边第一位开始匹配,匹配成功返回match object对象,匹配失败则返回None
     注:该方法并非完全匹配,要想实现完全匹配的效果可在用来匹配的字符串后加'$'   

1 import re
2 a = 'Hello world'
3 re.match(r'hello',a,re.I)      #Hello

   3、search(parttern,string,flags=0)

     作用:在string进行查找相匹配的字符串,匹配成功返回match object对象,匹配失败返回None
     注:1.该函数要实现match函数的功能可在匹配字符串前加'^'
            2.该函数要实现完全匹配可在字符串前后分别加'^','$'

1 import re
2 a = 'hello world'
3 re.search(r'^ello world$',a)

     注:对match object提供的方法(得到匹配成功返回的数据)
        1、group() :返回被匹配的字符串,可通过输入组号输出对应的内容
        2、groups():以元组形式返回匹配到的所有内容
        2、start() :返回匹配开始的位置
        3、end()   :返回匹配结束的位置
        4、span()  :返回一个元组(匹配开始、结束的位置)

 

   4、findall(pattern,string,flags=0)

     作用:遍历匹配,以列表的形式返回所有能够被匹配的字符串

1 import re
2 a = 'python2 Python3'
3 regex = re.compile(r'\d')
4 regex.findall(a)                 #['2','3']  

   5、finditer(parttern,string,flags=0)

     作用:作用与findall相同,但返回的为迭代器
       

   6、split(pattern,string[,maxsplit])

     maxsplit:最大分割数,不指定将全部分割
     作用:在string中匹配与pattern相同的字符,对string进行分割
    

   7、sub(pattern,repl,string,count)

     repl:需要替换的字符串
     count:替换个数,默认为0,即每个都替换
     作用:使用repl替换在string中匹配到pattern的字符,并返回被替换后的字符串

1 import re
2 a = 'hello world'
3 re.sub(r'w\D+','python',a)     #hello python

   8.subn(pattern,repl,string,count=0,flags=0)

     作用:作用与sub类似,会返回一个元组,即替换后的字符串及替换的次数。
    

posted @ 2018-05-07 15:33  雨落滴碎荷  阅读(186)  评论(0编辑  收藏  举报