re模块
时间:2019-07-20
本文章向大家介绍re模块,主要包括re模块使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
re模块
- 取文本或者字符串内找到你所需要的东西
基础的re使用
import re
s = '孙悟空找猪八戒找媳妇高翠兰,然后吃西瓜'
res = re.findall('西瓜',s)
print(res)
['西瓜']
- ^ 叫做元字符,元字符会有特殊的意义,匹配开头的,也就是说他只从开头找
res = re.findall('^孙悟空',s)j
print(res)
res = re.findall('^猪八戒',s)
print(res)
['孙悟空']
[]
- $只从结尾找
s = '孙悟空找猪八戒找媳妇西高翠兰,然后吃西瓜,再吃西瓜'
res = re.findall('西瓜$',s)
print(res)
['西瓜']
- |相当于or
res = re.findall('孙悟空|猪八戒',s)
print(res)
['孙悟空', '猪八戒']
- []找到[]内的元素
s = 'abcdefgabckdjfkljsadalasjkdlfjklbkljklfjc'
res = re.findall("[a,b,c]",s)
print(res)
['a', 'b', 'c', 'a', 'b', 'c', 'a', 'a', 'a', 'b', 'c']
- . 任意一个字符
s = '孙悟空找猪八戒找媳妇高翠兰,然后吃西瓜,再吃西瓜'
#
res = re.findall('媳妇...',s)
print(res)
['媳妇高翠兰']
- {3}大括号前面的字符匹配3次
s = '孙悟空找猪八戒找媳妇妇妇妇高翠兰,然后吃西瓜,再吃西瓜'
res = re.findall('媳妇{5}',s)
print(res)
[]
- *,前面的字符匹配无穷个,
s = '孙悟空找猪八戒找媳高翠兰,然后吃西瓜,再吃西瓜'
res = re.findall('媳妇*',s)
print(res)
['媳']
- +前面的字符,1到无穷个
s = '孙悟空找猪八戒找媳高翠兰,然后吃西瓜,再吃西瓜'
res = re.findall('媳妇+',s)
print(res)
[]
- ?前面的字符0-1个
s = '孙悟空找猪八戒找媳妇妇妇高翠兰,然后吃西瓜,再吃西瓜'
res = re.findall('媳妇?',s)
print(res)
['媳妇']
- \d匹配数字
s = '孙悟空找猪八戒找媳妇妇妇高翠兰,然后asdfasdf吃西234234瓜,再吃 西瓜'
res = re.findall('\d*',s)
print(res)
['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '234234', '', '', '', '', '', '', '', '', '', '']
- \D除了是数字都匹配到了
然后asdfasdf吃西234234瓜,再吃 西瓜'
res = re.findall('\D+',s)
print(res)
['孙悟空找猪八戒找媳妇妇妇高翠兰,然后asdfasdf吃西', '瓜,再吃 西瓜']
- \s,取空白
s = '孙悟空找猪八戒找媳妇妇妇高翠兰,然后asdfasdf吃西234234瓜,再吃 西瓜'
res = re.findall('\s+',s)
print(res)
[' ']
- \S,去非空字符
s = '孙悟空找猪八戒找媳妇妇###@@@妇高翠兰,然后asdfa___sdf吃西234234瓜,再吃 西瓜'
res = re.findall('\S+',s)
print(res)
['孙悟空找猪八戒找媳妇妇###@@@妇高翠兰,然后asdfa___sdf吃西
- \w,字母,数字,下划线
s = '孙悟空找猪八戒找媳妇妇妇高$$$$$@@@@翠兰,然____后asdfasdf吃西234234瓜,再吃 西瓜'
res = re.findall('\w+',s)
print(res)
['孙悟空找猪八戒找媳妇妇妇高', '翠兰', '然____后asdfasdf吃西234234瓜', '再吃', '西瓜']
- \W,非字母,数字,下划线
s = '孙悟空找猪八戒找媳妇妇妇高$$$$$@@@@翠兰,然____后asdfasdf吃西234234瓜,再吃 西瓜'
res = re.findall('\W+',s)
print(res)
['$$$$$@@@@', ',', ',', ' ']
贪婪模式
s = '孙悟空找猪八戒找媳妇妇妇高$$$$$@@@@翠兰,然____后asdfasdf吃西234234瓜,再吃 西瓜妇'
res = re.findall('猪.*妇',s)
print(s)
孙悟空找猪八戒找媳妇妇妇高$$$$$@@@@翠兰,然____后asdfasdf吃西234234瓜,再吃 西瓜妇
非贪婪模式
s = '孙悟空找猪八戒找媳妇妇妇高$$$$$@@@@翠兰,然____后asdfasdf吃西234234瓜,再吃 西瓜妇'
#
res = re.findall('猪.*?妇',s)
print(res)
['猪八戒找媳妇']
re模块高级
compile
- 写一个通用的规则模板
import re
s = '孙悟空找猪八戒找媳妇妇妇高$$$$$@@@@翠兰,然____后asdfasdf吃西234234瓜,再吃 西瓜妇'
res1 = re.compile('\d+')
res2 = re.compile('\w+')
res3 = re.compile('\s+')
result1 = res1.findall(s)
result2 = res2.findall(s)
result3 = res3.findall(s)
print(result1)
print(result2)
print(result3)
phone_compile = re.compile('1\d{10}')
email_compile = re.compile('\w+@\w+.\w+')
test_s = '12345678900 nickchen121@163.com 2287273393@qq.com'
res = phone_compile.findall(test_s)
print(res)
res = email_compile.findall(test_s)
print(res)
['234234']
['孙悟空找猪八戒找媳妇妇妇高', '翠兰', '然____后asdfasdf吃西234234瓜', '再吃', '西瓜妇']
[' ']
['12345678900']
['nickchen121@163.com', '2287273393@qq.com']
match和search
- match和srerch的区别,mathch从开头开始匹配找一个,search搜索所有的找第一个
# match 和 search的区别,mathch从开头开始匹配找一个,search搜索所有找第一个
import re
s = '猪八戒找媳妇猪八戒'
match_res = re.match('猪八戒',s) # 从开头开始匹配,取一个
print(match_res.group())
search_res = re.search('猪八戒',s) # 搜索一个
print(search_res.group())
猪八戒
猪八戒
分组
- 需要的东西括号就行了,括号外的就不打印了
import re
s = '猪八戒的媳妇是高翠兰,孙悟空的媳妇是白骨精,唐僧的媳妇是女儿国王,沙悟净没有媳妇(py9的学生们)'
res = re.findall('(.*?)的媳妇是(.*?)(,)',s)
print(res)
[('猪八戒', '高翠兰', ','), ('孙悟空', '白骨精', ','), ('唐僧', '女儿国王', ',')]
re.split()
- 就是字符串的split方法,区别是可以使用正则表达式去替换
import re
s = '猪八戒的媳妇是1高翠兰,孙悟空的媳妇是2白骨精,唐僧的媳妇是3女儿国王,沙悟净没有媳妇(py9的学生们)'
print(s.split(','))
res = re.split('\d+',s)
print(res)
s = '猪八戒的媳妇是a高翠兰,孙悟空的媳A妇是b白骨精,唐僧的B媳妇是z女儿国王,沙悟净没有媳妇(py9的学生们)'
print(s.split(','))
res = re.split('[a-zA-Z]',s) # a,b,c,
print(res)
['猪八戒的媳妇是1高翠兰', '孙悟空的媳妇是2白骨精', '唐僧的媳妇是3女儿国王', '沙悟净没有媳妇(py9的学生们)']
['猪八戒的媳妇是', '高翠兰,孙悟空的媳妇是', '白骨精,唐僧的媳妇是', '女儿国王,沙悟净没有媳妇(py', '的学生们)']
['猪八戒的媳妇是a高翠兰', '孙悟空的媳A妇是b白骨精', '唐僧的B媳妇是z女儿国王', '沙悟净没有媳妇(py9的学生们)']
['猪八戒的媳妇是', '高翠兰,孙悟空的媳', '妇是', '白骨精,唐僧的', '媳妇是', '女儿国王,沙悟净没有媳妇(', '', '9的学生们)']
sub和subn
- 他们俩都是替换内容,但是subn会计算替换了多少次,类似于字符串的replace内置方法
import re
s = '猪八戒的媳妇是1高翠兰,孙悟空的媳妇是2白骨精,唐僧的媳妇是3女儿国王,沙悟净6没有媳妇(py9的学生们)'
print(re.sub('\d','',s))
print(re.subn('\d','',s)) # 除了会修改内容,还会返回修改了多少次
猪八戒的媳妇是高翠兰,孙悟空的媳妇是白骨精,唐僧的媳妇是女儿国王,沙悟净没有媳妇(py的学生们)
('猪八戒的媳妇是高翠兰,孙悟空的媳妇是白骨精,唐僧的媳妇是女儿国王,沙悟净没有媳妇(py的学生们)', 5)
原文地址:https://www.cnblogs.com/zuihoudebieli/p/11219165.html
- MYSQL数据闪回方式
- 剑指 offer代码解析——面试题39判断平衡二叉树
- 跟着柴毛毛学Spring(3)——简化Bean的配置
- 剑指 offer代码解析——面试题39二叉树的深度
- 跟着柴毛毛学Spring(2)——Bean的配置
- C++ 使用STL string 实现的split,trim,replace-修订
- 跟着柴毛毛学Spring(1)——纵观Spring
- MYSQL常用SQL汇总
- Linux 下设置SVN DIFF
- 剑指 offer代码解析——面试题38数字在排序数组中出现的次数
- 剑指 offer代码解析——面试题37两个链表的第一个公共结点
- 剑指 offer代码解析——面试题34丑数
- 剑指 offer代码解析——面试题35第一个只出现一次的字符
- Python内置数据结构之集合
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 其他流---对象处理流
- 打印流
- 文件分割与合并
- 其他流---基本数据处理流
- 其他流---字节数组流与文件流对接
- 其他流---字节流数组
- 字符流出现乱码问题
- 缓冲流---为字节流和字符流复制文件增加缓冲流
- 字符流---输入输出与复制文本文件
- Spring 中的几个 PostProcessor 的区别与联系
- Spring 中基于注解的事务控制及原理分析
- Spring 中根据环境切换配置 @Profile
- Spring 中的属性赋值
- Spring 中控制 Bean 生命周期的几种方式及 BeanPostProcessor 执行原理
- Spring 中的 @Import 注解及向容器中添加 Bean 的几种方式