博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 66:re正则表达式1(全- tcy)
阅读量:1882 次
发布时间:2019-04-26

本文共 2877 字,大约阅读时间需要 9 分钟。

 本人经过1周的汇总,整理如下,欢迎补充改正。

目录:

re模块-概述   2018/6/14  2018/12/16
1.使用说明 
1).适用对象:   # Unicode字符串(str)以及8位字符串(bytes);不能混用2).匹配字符:   # 1)字母数字和特殊字符('!"%\',/:;<=>@_`')匹配自己   # 2)元字符与自身不匹配。如需使用需转义'#$&()*+-.?[\\]^{|}~';如'|':\|或[|];'$':\$或 [$] 3).反斜杠:   # r"\n"使用原始字符串4).使用方法:   # 获取模式并调用它的方法:在循环中访问正则表达式,预编译它将节省一些函数调用。   # 模块级函数:在循环之外,由于内部缓存,没有太大区别。
实例: 
# 实例1:模式对象:p = re.compile('[a-z]+')#编译正则表达式的对象 # re.compile('[a-z]+')m = p.match('tempo')    #匹配对象            # 
m.group() #返回RE匹配的子字符串 # 'tempo'm.start(), m.end() #返回匹配的开始和结束索引 # (0, 5)m.span() #在单个元组中返回开始和结束索引 # (0, 5)# 实例2:模块级函数re.match('[a-z]+','tempo').group() #'tempo'# 实例3:匹配行的末尾re.search('}$', '{block}').group() #'}'re.search('}$', '{block}\n').group()#'}'# 实例4:\b匹配单词的开头或结尾。单词结尾由空格或非字母数字字符表示。re.search(r'\bclass\b','no class at all').group() # 完整单词匹配 #'class're.search(r'\bclass\b','one subclass is') # Nonere.search('\bclass\b','no class at all') # Nonere.search('\bclass\b','\b' + 'class' + '\b').group()#'\x08class\x08' 

2.贪婪匹配与非贪婪匹配:

正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符 

# *?,+?,??,{m,n}? {n,}? 前面的*,+,?等都是贪婪匹配尽可能匹配,后加?号使其变成惰性匹配#实例1 re.findall(r"a(\d+?)",'a23b') # ['2']re.findall(r"a(\d+)",'a23b')  # ['23']re.match('<(.*)>','

title

').group() #

title

re.match('<(.*?)>','

title

').group()#

re.match(r'^(\d+)(0*)$', '102300').groups() # 贪婪匹配 #('102300', '')re.match(r'^(\d+?)(0*)$', '102300').groups()# 非贪婪匹配#('1023', '00')# 实例2 - 前后均有限定条件不存在什么贪婪模式。re.findall(r"a(\d+)b",'a3333b') # ['3333']re.findall(r"a(\d+?)b",'a3333b') # ['3333']

3.分支条件:

# 用分枝条件注意各条件顺序。从左到右测试每个条件,满足某分枝不会去再管其它的条件。0\d{2}-\d{8}|0\d{3}-\d{7}               #匹配 (如010-12345678) (0376-2233445)\(?0\d{2}\)?[- ]?\d{8}|0\d{2}[- ]?\d{8} #匹配3位区号的电话号码\d{5}-\d{4}|\d{5} #匹配美国邮编。规则5位数字或用连字号间隔9位数字\d{5}|\d{5}-\d{4} #匹配5位邮编(及9位邮编前5位) 

4.模拟scanf 

# scanf() 格式标记和正则表达式等效映射。scanf()格式 正则表达式%c            .%5c           {5}%d            [-+]?\d+%e,%E,%f,%g [-+]?(\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?%i            [-+]?(0[xX][\dA-Fa-f]+|0[0-7]*|\d+)%o            \d?\s)([-+]?(0[oO])?[0-7]+%s            \S+%u            \d+%x,          %X [-+]?(0[xX])?[\dA-Fa-f]+s=r'/usr/sbin/mail - 0 0x16, 4 0o70' re.search(r'(\S+) - (\d?\s)([-+]?(0[xX])?[\dA-Fa-f]+),'r' (\d?\s)([-+]?(0[oO])?[0-7]+)' ,s).group()#'/usr/sbin/mail - 0 0x16, 4 0o70'   
5.显示所有特殊的需转义字符和非转义字符 
import string,res0='';s1='';d=dict();i=0for v in string.punctuation:   if v!=re.escape(v):      d[i]=re.escape(v)# 转义正则表达式中具有特殊含义的字符      s0=s0+v      i+=1   else:      s1=s1+vs0 #需转义的特殊字符: '#$&()*+-.?[\\]^{|}~'s1 #不需转义特殊字符: '!"%\',/:;<=>@_`'d  #RE经转义特殊字符:   # {0: '\\#',1: '\\$',2: '\\&',3: '\\(',4: '\\)',5: '\\*',6: '\\+',7: '\\-',      8: '\\.',9:'\\?',10: '\\[',11: '\\\\',12: '\\]',13: '\\^',14: '\\{',     15: '\\|',16: '\\}',17: '\\~'}re.findall('\{',r'{') #匹配特殊需转义字符 ['{']re.findall(r'{',r'{') #匹配特殊需转义字符 ['{']re.findall('_',r'_')  #匹配特殊不需转义字符['_'] 

转载地址:http://mfqbf.baihongyu.com/

你可能感兴趣的文章
效率提升法则:高效人士不会去做的4件事
查看>>
8.PostgreSQL约束
查看>>
【技术分享】使用AES加密技术保障数据安全
查看>>
【应用实例】布线多?成本高?不可靠?泽耀方案没烦恼!
查看>>
数据可视化工具:Matplotlib绘图
查看>>
用Python写个超级小恐龙跑酷游戏,上班摸鱼我能玩一天
查看>>
闺蜜看我用Python画了一幅樱花图,吵着要我给他介绍程序员小哥哥
查看>>
【Python爬虫实战】知乎热榜数据采集,上班工作摸鱼两不误,知乎热门信息一网打尽
查看>>
自从我学会了数据挖掘Matplotlib、Numpy、Pandas、Ta-Lib等一系列库,我把领导开除了
查看>>
Python抓取哔哩哔哩up主信息:只要爬虫学的好,牢饭吃的早
查看>>
有个码龄5年的程序员跟我说:“他连wifi从来不用密码”
查看>>
领导让我整理上个季度的销售额,幸好我会Python数据分析,你猜我几点下班
查看>>
【Python爬虫实战】为何如此痴迷Python?还不是因为爱看小姐姐图
查看>>
零基础自学Python,你也可以实现经济独立!
查看>>
ElasticSearch与Mysql对比(ElasticSearch常用方法大全,持续更新)
查看>>
数字化转型的主干道上,华为云以“三大关键”成企业智能化推手
查看>>
数字化为何不走“捷”“径”?
查看>>
和总裁、专家交朋友,华为云助推政企智能化升级又做到前面去了
查看>>
BCOP章鱼船长,6月22日晚上8点上线薄饼
查看>>
为战疫助力,半导体功不可没
查看>>