设为首页 收藏本站
查看: 719|回复: 0

[经验分享] python学习笔记九:正则表达式

[复制链接]

尚未签到

发表于 2015-12-2 09:27:29 | 显示全部楼层 |阅读模式
  本文不涉及正则表达式本身的内容,只记一下python中正则的用法及常用方法。

一、re模块
  python中用re模块进行正则处理



>>>import re
>>>s = r'abc'
>>>re.findall(s,'aaaabcaaaaa')
['abc']
  或先编译(会更快):



>>> import re
>>> r1 = re.compile(r'abc', re.I)
>>> re.findall(r1,'ababcabd')
['abc']
#或用下面的方式
>>>r1.findall('ababcabd')
['abc']
  常用编译标志:
   DSC0000.jpg

二、常用方法
  1、compile:对正则进行编译,使运行速度加快,用法如上
  2、match:决定RE是否在字符串刚开始的位置,返回的是Match object对象,没匹配到返回None
  3、search:扫描字符串,找到这个 RE 匹配的位置,返回的是Match object对象,没匹配到返回None
  4、findall:找到RE匹配的所有子串,作为列表返回
  5、finditer:找到RE匹配的所有子串,作为迭代器返回,迭代器中是 Match object对象
  6、sub(regex,replace【可以是函数】,content,count=0【可选,替换的数量,默认为全部】,flags=0【可选,正则参数,如re.I】):数据替换
  详细参考:http://www.crifan.com/python_re_sub_detailed_introduction/
  7、subn(regex,replace,content,count=0,flags=0):跟sub相同,只是返回值中包含替换次数
  8、split(string [, maxsplit = 0]):把字符串按正则分隔

三、Match object 中常用方法
  1、group():返回被RE匹配的字符串
  2、start():返回匹配的开始的位置
  3、end():返回匹配结束的位置
  4、span():返回一个元组包含匹配(开始和结束)的位置
  示例:



import re
m = re.match(r'(\w+) (\w+)(?P<sign>.*)', 'hello world!')
print "m.string:", m.string
print "m.re:", m.re
print "m.pos:", m.pos
print "m.endpos:", m.endpos
print "m.lastindex:", m.lastindex
print "m.lastgroup:", m.lastgroup
print "m.group(1,2):", m.group(1, 2)
print "m.groups():", m.groups()
print "m.groupdict():", m.groupdict()
print "m.start(2):", m.start(2)
print "m.end(2):", m.end(2)
print "m.span(2):", m.span(2)
print r"m.expand(r'\2 \1\3'):", m.expand(r'\2 \1\3')
### output ###
# m.string: hello world!
# m.re: <_sre.SRE_Pattern object at 0x016E1A38>
# m.pos: 0
# m.endpos: 12
# m.lastindex: 3
# m.lastgroup: sign

# m.group(1,2): ('hello', 'world')
# m.groups(): ('hello', 'world', '!')
# m.groupdict(): {'sign': '!'}
# m.start(2): 6
# m.end(2): 11
# m.span(2): (6, 11)
# m.expand(r'\2 \1\3'): world hello!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-146148-1-1.html 上篇帖子: 简单的贝叶斯分类器的python实现 下篇帖子: 用 eric6 与 PyQt5 实现python的极速GUI编程(系列03)---- Drawing(绘图)(1)-- 绘写文字
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表