python中re正则表达式
1、re匹配的语法
re.math 从头开始匹配,没有匹配到返回None
re.seach 匹配包含,,没有匹配到返回None
re.findall 把所有匹配到的字符,以列表的形式返回,没有匹配到返回空列表[]
re.splitall 以匹配到的字符当做列表分隔符
re.sub 匹配字符并替换
re.fullmath 全部匹配
s='adds231f'
print(re.match("[0-9]",s))
print(re.search("[0-9]",s))
print(re.findall("[0-9]",s)) 结果:
None
<_sre.SRE_Match object; span=(4, 5), match=''>
['', '', '']
***注意****
match和search一旦匹配成功,就是一个match object对象,而match object对象有以下方法:
group() 返回被 RE 匹配的字符串
start() 返回匹配开始的位置
end() 返回匹配结束的位置
span() 返回一个元组包含匹配 (开始,结束) 的位置
group() 返回re整体匹配的字符串,可以一次输入多个组号,对应组号匹配的字符串
math、seach匹配到后返回的是一个对象,若要获取匹配到的值要取greap()
s='rasfd23fd5'
m=re.match("[0-9]",s)
ss=re.search("[0-9]",s)
if m:
print("math方法:"+m.group())
if ss:
print("search方法:"+ss.group()) 结果:
search方法:2
2、re常用表达式公式
'.' 匹配除\n以外的任意一个字符(从左开始),2个 '.’ 就匹配2个字符
s='rasfd23fd5'
print(re.search('.',s).group())
print(re.search('..',s).group()) 结果:
r
ra
' ^' 匹配字符串开头。在多行模式中匹配每一行的开头
print(re.search('^r','rasfd23fd5'))
print(re.match('r','rasfd23fd5'))
print(re.search('^rs','rasfd23fd5')) 结果:
<_sre.SRE_Match object; span=(0, 1), match='r'>
<_sre.SRE_Match object; span=(0, 1), match='r'>
None
'$'匹配字符串末尾,在多行模式中匹配每一行的末尾
print(re.search('d$','rasfdg'))
print(re.search('g$','rasfdg'))
结果:
None
<_sre.SRE_Match object; span=(5, 6), match='g'>
'*' 匹配前一个字符0或多次
print(re.search('a*','rarrdrg')) #要匹配a开关
print(re.search('rar*','rarardrg'))
print(re.search('rar*','rarrdrg'))
print(re.search('rar*','rarrrdrg')) #匹配ra,rar,rarr,rarr,rarrr......等 结果:
<_sre.SRE_Match object; span=(0, 0), match=''>
<_sre.SRE_Match object; span=(0, 3), match='rar'>
<_sre.SRE_Match object; span=(0, 4), match='rarr'>
<_sre.SRE_Match object; span=(0, 5), match='rarrr'>
'+' 匹配前一个字符1或多次
print(re.search('a+','rarrdrg'))
print(re.search('rar+','sraardrg'))
print(re.search('rar+','srardrg'))
print(re.search('rar+','srarrdrg'))
print(re.search('rar+','srarrrdrg')) 结果:
<_sre.SRE_Match object; span=(1, 2), match='a'>
None
<_sre.SRE_Match object; span=(1, 4), match='rar'>
<_sre.SRE_Match object; span=(1, 5), match='rarr'>
<_sre.SRE_Match object; span=(1, 6), match='rarrr'>
'?' 匹配前一个字符1或0次
print(re.search('rar?','sraardrg'))
print(re.search('rar?','srardrg'))
print(re.search('rar?','srarrdrg'))
print(re.search('rar?','sarrdrg')) 结果:
<_sre.SRE_Match object; span=(1, 3), match='ra'>
<_sre.SRE_Match object; span=(1, 4), match='rar'>
<_sre.SRE_Match object; span=(1, 4), match='rar'>
None
'{m}匹配前一个字符m次
print(re.search('a{2}','sraardrg'))
print(re.search('a{2}','srarardrg')) 结果:
<_sre.SRE_Match object; span=(2, 4), match='aa'>
None
'{n,m}匹配前一个字符n到m次
print(re.search('a{1,2}','sraardrg'))
print(re.search('a{1,2}','srarardrg'))
print(re.search('a{1,2}','sraaardrg')) 结果:
<_sre.SRE_Match object; span=(2, 4), match='aa'>
<_sre.SRE_Match object; span=(2, 3), match='a'>
<_sre.SRE_Match object; span=(2, 4), match='aa'>
'|' 匹配|右边或左边的字符
print(re.search('ar|dr','sraardrg'))
print(re.search('ar|dr','srdddrdrg'))
结果:
<_sre.SRE_Match object; span=(3, 5), match='ar'>
<_sre.SRE_Match object; span=(4, 6), match='dr'>
‘(....)’ 分组匹配,
被括起来的表达式将作为分组,从表达式左边开始没遇到一个分组的左括号“(”,编号+1.
分组表达式作为一个整体,可以后接数量词。表达式中的|仅在该组中有效。
k=re.search('([A-z]+)([0-9]+)','Terry913')
k_group =k.group()
k_groups =k.groups()
print(k_group) #-->Terry913
print(k_groups) #->('Terry', '913')
反斜杠\的作用:
反斜杠后边跟元字符去除特殊功能;(即将特殊字符转义成普通字符)
反斜杠后边跟普通字符实现特殊功能;(即预定义字符)
引用序号对应的字组所匹配的字符串。
\w |
匹配字母数字及下划线 |
\W |
匹配非字母数字及下划线 |
\s |
匹配任意空白字符,等价于 [\t\n\r\f]. |
\S |
匹配任意非空字符 |
\d |
匹配任意数字,等价于 [0-9]. |
\D |
匹配任意非数字 |
\A |
匹配字符串开始 |
\Z |
匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串。 |
\z |
匹配字符串结束 |
\G |
匹配最后匹配完成的位置。 |
\b |
匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。 |
\B |
匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。 |
3 特殊分组
python中re正则表达式的更多相关文章
- Python::re 模块 -- 在Python中使用正则表达式
前言 这篇文章,并不是对正则表达式的介绍,而是对Python中如何结合re模块使用正则表达式的介绍.文章的侧重点是如何使用re模块在Python语言中使用正则表达式,对于Python表达式的语法和详细 ...
- 在Python中使用正则表达式同时匹配邮箱和电话并进行简单的分类
在Python使用正则表达式需要使用re(regular exprssion)模块,使用正则表达式的难点就在于如何写好p=re.compile(r' 正则表达式')的内容. 下面是在Python中使用 ...
- python模块 re模块与python中运用正则表达式的特点 模块知识详解
1.re模块和基础方法 2.在python中使用正则表达式的特点和问题 3.使用正则表达式的技巧 4.简单爬虫例子 一.re模块 模块引入; import re 相关知识: 1.查找: (1)find ...
- Python学习-38.Python中的正则表达式(二)
在Python中,正则表达式还有较其他编程语言有特色的地方.那就是支持松散正则表达式了. 在某些情况,正则表达式会写得十分的长,这时候,维护就成问题了.而松散正则表达式就是解决这一问题的办法. 用上一 ...
- Python学习-37.Python中的正则表达式
作为一门现代语言,正则表达式是必不可缺的,在Python中,正则表达式位于re模块. import re 这里不说正则表达式怎样去匹配,例如\d代表数字,^代表开头(也代表非,例如^a-z则不匹配任何 ...
- [Python]网络爬虫(七):Python中的正则表达式教程
转自:http://blog.csdn.net/pleasecallmewhy/article/details/8929576#t4 接下来准备用糗百做一个爬虫的小例子. 但是在这之前,先详细的整理一 ...
- [Python]网络爬虫(七):Python中的正则表达式教程(转)
接下来准备用糗百做一个爬虫的小例子. 但是在这之前,先详细的整理一下Python中的正则表达式的相关内容. 正则表达式在Python爬虫中的作用就像是老师点名时用的花名册一样,是必不可少的神兵利器. ...
- 在python中使用正则表达式(转载)
https://www.cnblogs.com/hanmk/p/9143514.html 在python中使用正则表达式(一) 在python中通过内置的re库来使用正则表达式,它提供了所有正则表 ...
- python中的正则表达式(re模块)
一.简介 正则表达式本身是一种小型的.高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配.正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎 ...
- python中关于正则表达式三
2015年8月14日 11:10 7.2正则表达式操作 正则表达式使用反斜杠字符'\'来暗示一些特殊的形式或者允许特殊的字符使用但是没有调用它们特殊的意思.在字符串常量中的相同目标的字符的python ...
随机推荐
- streamsets
streamstes用户指南: https://streamsets.com/documentation/datacollector/latest/help/index.html#datacollec ...
- 黑电平校正BLC
参考:https://www.cnblogs.com/zhangAlin/p/10661763.html
- nginx的autoindex,目录浏览,配置和美化,美观的xslt_stylesheet
nginx的autoindex,目录浏览,配置和美化,美观的xslt_stylesheet Nginx custom autoindex with XSLT 转载注明来源: 本文链接 来自osnosn ...
- Read The Docs搭建
#!/bin/sh ########################### base ###################### yum -y update yum -y install yum-u ...
- iOS设置截图背景图片透明
/** 设置图片背景为透明 */- (UIImage *)imageToTransparent { // 分配内存 const int imageWidth = self.size.width; co ...
- 2019年1月16日22:50:28 白糖SR1905
很好的机会,只拿了点皮毛,如果说都是因为上班时间不充裕那是给自己找借口,最主要原因没别的:思维不清,策略不明- 这里的入场初衷是周线区间下沿,日线向下脱离中枢失败后回拉一笔,那么这一单的做法就应该很明 ...
- 【转录组入门】3:了解fastq测序数据
操作:需要用安装好的sratoolkit把sra文件转换为fastq格式的测序文件,并且用fastqc软件测试测序文件的质量 作业:理解测序reads,GC含量,质量值,接头,index,fastqc ...
- tomcat9配置https
首先去阿里云申请一个pfx证书,可以免费获得. 其次,在tomcat的server.xml增加如下connector <Connector port="443" protoc ...
- altium designer 制作内部不铺铜的封装,如三极管下面禁止铺铜
制作封装的时候,按P键或菜单栏中点击place选项点选Polygon Pour Cutout.画一个原件禁止铺铜区域即可.
- 01 jmeter性能测试系列_Jmeter的体系结构
深圳文鹏教育jmeter 性能测试讲义 概念 元件:元件代表jmeter工具菜单中的一个子菜单,比如HTTP请求.事务控制器.响应断言等: 组件:一组元件的集合(一个或者多个),比如逻辑控制器中有事务 ...