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

python中的re模块

时间:2016-10-18 13:21:52      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

        re模块包含对正则表达式的支持.正则表达式是可以匹配文本片段的模式,最简单的正则表达式就是普通的字符串,可以匹配其自身。

一  正则表达式中的元字符介绍:

        .  称为通配符,可以匹配任何字符(除了换行符)

        ^  脱字符,匹配字符串的开头

      $  匹配字符串的结尾

        *  匹配前面出现的正则表达式符号0次到多次

        + 匹配前面出现的正则表达式符号1次到多次

        ?  匹配前面出现的正则表达式符号0次或者1次

     {N} 匹配前面出现的正则表达式符号N次

   {M,N}匹配前面出现的正则表达式字符出现M到N次

      [...] 字符集,匹配[]中出现的任意一个字符

    [^...] 反转字符集,匹配除[]中外的任意字符

     [x-y] 匹配从x到y的字符

  re1|re2 可选模式,匹配|左边或者右边的表达式

     (...)  分组模式,子模式

    \d与\D  \d匹配任意数字0-9同[0-9],\D则相反,匹配任意的非数字

    \w与\W \w匹配任意数字或者字符同[0-9a-zA-Z],\W与\w相反

    \b与\B    \b匹配单词边界,\B相反

    \A,\Z    \A匹配字符串开头,\Z匹配字符串结尾  

二 re模块的方法:

       compile(patten[,flag])  根据包含正则表达式的字符创建模式对象

       search(patten,string[,flag])  在字符串中寻找模式

       match(pattern,string[,flag])  在字符串开始出匹配模式

       split(patten,string[,maxsplit)   根据模式匹配项来分割字符

       findall(patten,string[,flag])  列出字符串中模式匹配的所有匹配项

       sub(patten,repl,string[,count=0])  将字符串中所有与模式匹配的部分用repl代替

       escape(string)  将字符串所有特殊字符转义

 特别注意,函数re.compile()将正则表达式转换为模式对象,可以实现更有效率的匹配。其实在使用search或者match进行匹配时他们会在内部将字符串转换为正则表达式时对象。如果使用complie()一次转换后,在每次匹配时就不用进行转换了,提高了匹配效率。 

     re.search()方法会方法一个MatchObject或者None,因此可以用作条件语句中。re,match()会在字符串开头进行匹配,返回MatchObject或者None .

用例:

# 用re.split()来分割单词
some_text = ‘alpha, beta,,,,gama delta‘
re.split(r‘[, ]+‘,some_text)
#结果为:[‘alpha‘, ‘beta‘, ‘gama‘, ‘delta‘]
# re.findall()以列表形式返回模式所有匹配项
pat = re.compile(r‘[a-zA-Z]+‘)
text = ‘"Hm ....Err -- are you sure?"he said,sounding insecure‘
re.findall(pat,text)
#结果为:[‘Hm‘, ‘Err‘, ‘are‘, ‘you‘, ‘sure‘, ‘he‘, ‘said‘, ‘sounding‘, ‘insecure‘]
# re.findall()以列表形式返回刚才字符串的标点符号
pat = re.compile(r‘[?\-.,"]+‘)  #注意-被转义
text = ‘"Hm ....Err -- are you sure?"he said,sounding insecure‘
print re.findall(pat,text)
#结果为:[‘"‘, ‘....‘, ‘--‘, ‘?"‘, ‘,‘]
# re.sub()完成模式替换
pat = re.compile(r‘\{name\}‘)  #注意-被转义
text = ‘Dear {name}‘
print re.sub(pat,‘Mr. Tange‘,text)

  

 

python中的re模块

标签:

原文地址:http://www.cnblogs.com/td15980891505/p/5972757.html

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