Python中模块之re的功能介绍
re模块的功能介绍
1. 方法
match
从开头开始查找
方法:re.match(pattern,string,flags=0)
返回值:<class '_sre.SRE_Match'>(找到) or None(没找到)
例如:m = re.match('e','excel')
print(m.group())
>>> 'e'
#该方法只能从开头开始查,如果查找的内容不是开头或者不存在时,返回值为None,验证时调用group方法时将报错,如果找到了,也只有一个,验证时可以使用group方法进行获取查找的内容。
search
全文搜索,只获取第一个
方法:re.search(pattern,string,flags=0)
返回值:<class '_sre.SRE_Match'>(找到) or None(没找到)
例如:s = re.search('ba','adbadfsbadsf')
print(s.group())
>>> 'ba'
#该方法与上述方法类似,不过该方法查找的范围是全部内容,但返回只返回查找到的第一个,验证方法同上。
findall
返回找到的所有内容(全文搜索)
方法:re.findall(pattern,string,flags=0)
返回值:list
例如:print(re.findall('s','afadsfdsf'))
>>> ['s','s']
#该方法不需要通过group方法进行验证,找不到时返回一个空列表。
split
搜索全文并进行切片
方法:re.split(pattern,string,maxsplit=0,flags=0)
返回值:list
例如:print(re.split('ax','sdaxfsfsaxdfsax'))
>>> ['sd', 'fsfs', 'dfs', '']
#指定内容作为分割字符串的点进行切片,如果指定内容开头或者结果则结果为列表中的一个空字符串,同时也可以指定切片的最大次数。
sub
替换
方法:re.sub(pattern,repl,string,count=0,flags=0)
返回值:str
例如:print(re.sub('a','23','sdfafasdf'))
>>> 'sdf23f23sdf'
#该方法默认全文替换,可以指定替换次数,如果查找的内容不存在时,将返回原字符串。
fullmatch
完全匹配搜索
方法:re.fullmatch(pattern,string,flags=0)
返回值:<class '_sre.SRE_Match'>(找到) or None(没找到)
例如:fm = re.fullmatch('sa','sa')
print(fm.group())
>>> 'sa'
#该方法与match类似,只不过,该方法搜索的匹配内容必须和搜索的原文一样,否则都认为是未找到。
subn
替换并返回元祖
方法:re.subn(pattern,repl,string,count=0,flags=0)
返回值:tuple
例如:print(re.subn('as','3','sfsasa,sdf'))
>>> ('sfs3a,sdf', 1)
#该方法把替换后的字符串作为元祖的第一个元素,第二个元素为替换的次数,如果未替换,则次数为0
finditer
查找所有并把返回值生成一个迭代器
方法:re.finditer(pattern,string,flags=0)
返回值:<class 'callable_iterator'>
例如:f_iter = re.finditer('a','adsfasfa')
find_l = [i.group() for i in f_iter]
print(find_l)
>>> ['a', 'a', 'a']
#利用列表推导式把获取到的结果作为列表进行返回。
2. 表达式符号
常用符号如下:
符号 表示
1. '.' 默认匹配除\n之外的任意一个字符,包括字母、数字、中文、特殊字符等,若flags指定为S(DOTALL),则匹配任意字符,包括换行符。
2. '^' 默认匹配字符开头,若flags指定为M(MULTILINE),可以匹配多行中的开头(如:'^a','\nabd\nsaf')。
3. '$' 默认匹配字符结尾,若flags指定为M(MULTILINE),可以匹配多行中的结尾(如:'$ab','asdfab\ndsa\n')。
4. '*' 匹配字符0次或多次
5. '+' 匹配字符1次或多次
6. '?' 匹配字符0次或1次
7. '{m}' 匹配字符m次
8. '{n,m}' 匹配字符n次到m次
9. '|' 匹配字符二选一
10. '(...)' 分组匹配
11. '\A' 匹配字符开头,与'^'一样
12. '\Z' 匹配字符结尾,与'$'一样
13. '\d' 匹配数字[0,9]
14. '\D' 匹配非数字
15. '\w' 匹配字母、数字、中文,除特殊字符
16. '\W' 匹配特殊字符,包括\n
17. '\s' 匹配空白字符(即' ')、\t、\n、\r
18. '(?P<name>)' 分组匹配加命名
第18个表达式符号'(?P)'的实例如下:
s = re.search("(?P<province>\d{2})(?P<city>\d{2})(?P<county>\d{2})(?P<year>\d{4})","371481199306143242")
print(s.groupdict())
{'year': '1993', 'city': '14', 'province': '37', 'county': '81'}
print(s.group())
3714811993
print(s.groups())
('37', '14', '81', '1993')
#该表达式得到的返回值也是<class '_sre.SRE_Match'>这个类。通过验证的方法也比较多,验证获得的返回值分别为字典、字符串和元祖类型。
flags常用的几种关键字参数
1. re.I(re.IGNORECASE):忽略大小写
2. re.M(re.MULTILINE):多行模式,对'^'和'$'有所改变
3. S(DOTALL):包含\n的匹配模式,主要用于'.'的匹配规则
#括号内为完整输入,前面是简写。
flags关键字参数的实例如下:
re.I
str1 = '\nad23好*sd\n阿道夫dsaf\nsSD'
f_i = re.findall('s',str1,flags=re.I)
print(f_i)
['s', 's', 's', 'S']
#如果flags为默认值(即flags=0),则该返回值中不会有'S'该元素。
re.M
str1 = '\nad23好*sd\n阿道夫dsaf\nsSD'
f_start = re.findall('^s',str1,flags=re.M)
print(f_start)
['s']
f_stop = re.findall('f',str1,flags=re.M)
print(f_stop)
['f']
#如果flags为默认值(即flags=0),则该返回值应为空列表。
re.S
str1 = '\nad23好*sd\n阿道夫dsaf\nsSD'
s_any = re.search('.',str1,flags=re.S)
print(s_any.group())
#该打印的结果是空,由于验证时未报错,说明是有匹配到'\n'换行符,如果flags为默认值(即flags=0),则上述验证将报错。
Python中模块之re的功能介绍的更多相关文章
- Python中模块之os的功能介绍
Python中模块之os的功能介绍 1. os的变量 path 模块路径 方法:os.path 返回值:module 例如:print(os.path) >>> <module ...
- Python中模块之copy的功能介绍
模块之copy的功能介绍 copy主要分两种: 1.浅拷贝 2.深拷贝 赋值: 在python中赋值算特殊的拷贝,其实赋值可以理解为同一个对象有两个名字,所以当其中一个发生变化,另一个也跟着会变化. ...
- Python中模块之queue的功能介绍
模块之queue的功能介绍 队列的分类: 队列主要要分为两种 1.双向队列 2.单项队列 1. 单项队列 创建单项队列 格式:queue.Queue(obj) 例如:que = queue.Queue ...
- Python中模块之sys的功能介绍
sys模块的功能介绍 1. sys的变量 argv 命令行参数 方法:sys.argv 返回值:list 例如:test1.py文件中有两句语句1.import sys 2.print(sys.arg ...
- Python中模块之random的功能介绍
random的功能介绍 random模块的方法如下: betavariate 获取一个range(0,1)之前的随机浮点数 方法:random.betavariate(alpha,beta) 返回值: ...
- Python中生成器和迭代器的功能介绍
生成器和迭代器的功能介绍 1. 生成器(generator) 1. 赋值生成器 1. 创建 方法:x = (variable for variable in iterable) 例如:x = (i f ...
- Python中def及lambda的功能介绍
函数def及lambda的功能介绍 1. def函数的功能介绍 1. 函数的参数 无参数函数 格式:def func_name(): '''__doc__'''#函数的说明文档(内容) express ...
- 查看python中模块的所有方法
查看python中模块的所有方法 安装的python模块,现将查看方法总结如下 一.CMD命令行下使用pydoc命令 在命令行下运行$ pydoc modules即可查看 二.在python交 ...
- [python]关于在python中模块导入问题追加总结
[背景] 最近在写程序时,我使用的eclipse编辑器运行都没有问题,然后部署到自动化环境上却偏偏报找不到相应模块问题,现在对该问题在之前的贴子上追加总结 原帖子:[python]关于python中模 ...
随机推荐
- $.ajax 提交数据到后台.
//AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML -- (Extensible Markup Language 可扩展标记语言 ...
- 解决忽略VScode中Python插件pylint报错的问题
pylint是VScode中python自带的插件,可以帮助代码规范,美观. 但是有些报错是你不想看到的,你可以选择性的忽略. 例如,在re.compile()中,可以添加参数re.S使. 匹配任意字 ...
- jhipster生成项目无法使用restful请求,报access_denied 403错误
写在前边: 我们的微服务是注册中心.uaa.gateway为基础,添加微服务应用,昨天下午在测试jhipster的增删改查,因为jhipster生成的代码都是restful的,好不容易找到网关配置的映 ...
- HTTP协议扫盲(二)HTTP协议的请求方法、请求头和响应头
一.HTTP请求方法 Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE. 一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST ...
- jprofiler配置
cataline.sh JAVA_OPTS="$JAVA_OPTS -agentlib:jprofilerti=port=8849"JAVA_OPTS="$JAVA_OP ...
- django知识回顾
一.web框架 1.web框架本质 众所周知,对于所有的web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端 1.浏览器(socket客户端) 2.发送IP和端 ...
- mysql 千万级数据查询效率实践,分析 mysql查询优化实践--本文只做了一部分,仅供参考
数据量, 1300万的表加上112万的表 注意: 本文只做了部分优化,并不全面,仅供参考, 欢迎指点. 请移步tim查看,因为写的时候在tim写的,粘贴过来截图有问题,就直接上链接了. https ...
- TSQL:判定一段数组连续的数字段有多少的方案
给定了一列数字,需要判定该列中连续的数据字有多少条记录: field1,field2 , , , , , create table tbl( field1 int, field2 int ) ,); ...
- Python系列之 - 装饰器
装饰器主要是用来对函数的操作,我们把定义的函数比作一个蛋糕的话,那么装饰器就是盒子,如果要吃蛋糕就先打开盒子.具体到程序中就是在函数外层又套了一层,套的那一层就是一个装饰器.这么说可能有点抽象,那么我 ...
- LabelFrame
LabelFrame组件是Frame组件的变体. 默认情况下,LabelFrame会在其子组件的周围绘制一个边框以及一个标题. 何时使用LabelFrame组件?当你想要奖一些相关的组件分为一组的时候 ...