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 ...
随机推荐
- Java 序列化 返序列化
原文: http://www.cnblogs.com/xdp-gacl/p/3777987.html 一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象 ...
- Linux简易APR内存池学习笔记(带源码和实例)
先给个内存池的实现代码,里面带有个应用小例子和画的流程图,方便了解运行原理,代码 GCC 编译可用.可以自己上网下APR源码,参考代码下载链接: http://pan.baidu.com/s/1hq6 ...
- verilog 中task用法
1.任务定义 任务定义的形式如下: task task_id; [declaration] procedural_statement endtask 其中,关键词 task ...
- python读写文件\r\n问题
newline controls how universal newlines mode works (it only applies to text mode). It can be None, ' ...
- Elasticsearch-6.7.0系列(五)5044端口 logstash安装
centos7环境 下载logstash wget https://artifacts.elastic.co/downloads/logstash/logstash-6.7.0.tar.gz ...
- jmeter问题
1.使用jmeter传入json参数报错 具体场景:使用python+request执行接口测试,正常:把python的参数直接复制,使用jmeter执行接口测试,提示json格式错误. {...,& ...
- 7.7 wordcnt.c 程序
wordcnt.c 程序 #include <stdio.h> #include <ctype.h> // 为isspace() 函数提供原型 #include <std ...
- 阿里云linux yum源配置
1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2.下载新的CentOS-Base ...
- java web开发环境tomcat安装配置
1.下载jdk8并安装 2.下载tomcat windows环境下的免安装版zip包 3.设置两个环境变量 4.在tomcat的bin路径下双击startup.bat 启动tomcat服务器 5.使用 ...
- Android 开发 监听back并且执行home键功能
方法一: 在activity中重写onBackPressed()方法 ,注意此处一定要注释或者删除 super.onBackPressed();方法 @Override public void onB ...