re模块

功能:用来匹配字符串(动态、模糊的匹配),爬虫用的多。

一、常用方法:

  1. match():从头匹配
  2. search():从整个文本搜索
  3. findall():找到所有符合的
  4. split():分割
  5. sub():替换
  6. group():结果转化为内容
  7. groupdict():结果转化为字典

用法在后面会有详解。

二、常用正则表达式符号:

'.'

默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括\n

'^'

匹配字符开头

'$'

匹配字符结尾

'*'

匹配*号前的字符0次或多次

'+'

匹配前一个字符1次或多次

'?'

匹配前一个字符1次或0次

'{m}'

匹配前一个字符m次

'{n,m}

匹配前一个字符n到m次

'|'

匹配符号两边的任意一个,相当于或

'(...)'

分组匹配

'\A'

只从字符开头匹配,比如re.search("\Aabc","gggggabc") 是匹配不到的

'\Z'

匹配字符结尾,和$一样

'\d'

匹配数字0-9

'\D'

匹配非数字

'\w'

匹配[A-Za-z0-9]

'\W'

匹配非[A-Za-z0-9]

'\s'

匹配空白字符、\t、\n、\r

三、每个表达式和函数的详细使用情况:

import re'''
(1).:默认匹配除\n之外的任意一个字符。若指定flag DOTALL,则匹配任意字符,包括换行'''
res = re.match('......','li123kunhong123')
print(res.group())  #结果——li123k'''
(2)+:匹配前一个字符1次或多次。'''
res = re.match('.+','li123kunhong123')
print(res.group())  #结果——li123kunhong123'''
(3)^:从开头匹配字符。'''
res = re.match('^li\d+','li123kunhong123')
print(res.group())  #结果——li123''''
(4)$:匹配字符结尾,
$前面的必须是字符串结尾'''
res = re.search('k.+3$','li123kunhong123')  #获取k开始,中间任意,g结尾的字符串
print(res.group())  #结果——kunhong123'''
(5)[]:限制'''
#匹配中间的英文
res = re.search('k[a-z]+g','likunhong123')
print(res.group())  #结果——kunhong
#连数字一起匹配
res = re.search('k[a-z0-9]+g','likun123hong123')
print(res.group())  #结果——kun123hong#匹配两个井号之间的
res = re.search('#.+#','asdf#saffff123#sadf')
print(res.group())  #结果——#saffff123#'''
(6)?:匹配?的前一个字符出现或者不出现'''
res = re.search('ax?', 'abcd')  #意思为ax中的a必须出现,x可以出现或者不出现
print(res.group())  #结果——a
res = re.search('ax?', 'axbcd') #匹配ax,其中a必须出现,x可不出现
print(res.group())  #结果——ax
res = re.search('a?nnc?', 'asdnnc') #匹配annc,其中nn必须出现
print(res.group())  #结果——nnc'''
(7){m}{n,m}:匹配前一个字符m次,匹配前一个字符n到m次'''
res = re.search('[0-9]{3}', 'a1a11a111')
print(res.group())  #结果——111
res = re.findall('[0-9]{3}', 'a123a113a1114')
print(res)  #结果——['123', '113', '111']'''
(8)|:或'''
res = re.search('abc|ABC', 'aaabcAAABC')
print(res.group())  #结果为abc
res = re.findall('abc|ABC', 'aaabcAAABC')
print(res)  #结果为['abc', 'ABC']'''
(9)():分组匹配'''
res = re.search('abc{2}', '3asfabccasdf')
print(res.group())  #结果为abccres = re.search('(abc){2}(\|\|=)', '857kjhabcabc||=32342')
print(res.group())  #结果为abcabc||='''
'\A'    只从字符开头匹配,re.search("\Aabc","alexabc") 是匹配不到的
'\Z'    匹配字符结尾,同$
'\d'    匹配数字0-9
'\D'    匹配非数字
'\w'    匹配[A-Za-z0-9]
'\W'    匹配非[A-Za-z0-9]
'\s'     匹配空白字符、\t、\n、\r , re.search("\s+","ab\tc1\n3").group() 结果 '\t'
''''''搞一个大事情'''
a = 'likunhong23student'
b = re.search("(?P<name>[a-zA-Z]+)(?P<age>[0-9]+)(?P<job>\w+)",a).groupdict()
print(b)
#结果为:{'name': 'likunhong', 'age': '23', 'job': 'student'}#可以用来识别身份证号
id = '300100199905120516'
b = re.search('(?P<province>\d{3})(?P<shi>\d{3})(?P<birth>\d{8})(?P<num>\d{2})(?P<last>\d{2})', id).groupdict()
print(b)
#结果为:{'province': '300', 'shi': '100', 'birth': '19990512', 'num': '05', 'last': '16'}'''
split()分割'''
res = re.split('[0-9]+', 'ab23bas23basd9989ad')
print(res)  #结果为['ab', 'bas', 'basd', 'ad']'''
sub()替换,count不写默认为全体换'''
res = re.sub('[0-9]+', '?', 'abc2abc8abc4d', count=2)
print(res)  #结果为abc?abc?abc4d'''
匹配反斜杠'''
res = re.search(r'\\d', 'asdf\dx')
print(res.group())  #结果为\d'''
最后是flags'''
#1、忽略大小写
res = re.search('[a-z]+', 'asdf\dx', flags=re.I)
print(res.group())  #结果为asdf
#2、多行模式
res = re.search('^g', '\ngqwqw\ndxas\nadf\nasdf', flags=re.M)
print(res.group())  #结果为g
#3、匹配任意字符
res = re.search('.', '\ngqwqw\ndxas\nadf\nasdf', flags=re.S)
print(res.group())  #结果为g

python之re模块详解相关推荐

  1. python之sys模块详解_(转)python之os,sys模块详解

    python之sys模块详解 原文:http://www.cnblogs.com/cherishry/p/5725184.html sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和 ...

  2. 【Python】python之subprocess模块详解

    [Python]python之subprocess模块详解 subprocess模块 subprocess是Python 2.4中新增的一个模块,它允许你生成新的进程,连接到它们的 input/out ...

  3. Python的pickle模块详解(包括优缺点及和JSON的区别)

    文章目录 一.pickle是什么? 1.pickle的优缺点 2.pickle和JSON的区别 3.pickle的应用总结 二.pickle的用法 1. pickle接口 2. pickle实例 结语 ...

  4. python中logging模块详解_python logging日志模块详解

    logging 日志模块详解 用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这 ...

  5. python当中时间模块详解,包括time,timeit,datatime

    目录 time 模块 -- 时间获取和转换 以下三个比较常见: time.perf_counter() time.process_time() time.sleep(secs) timeit 模块详解 ...

  6. python re正则模块详解

    一. 正则表达式 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子 ...

  7. Python的PyYAML模块详解

    文章目录 注:原文链接 简介 安装 简单安装 从源码安装 最常被问到的问题 使用详解 加载YAML 转储YAML 构造.表示和解析 YAML语法 文档 块序列 块映射 流集合 标量 别名 标签 YAM ...

  8. Python中time模块详解

    转载自:http://qinxuye.me/article/details-about-time-module-in-python/ 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间 ...

  9. Python os.path() 模块 详解 附算例

    Python os.path() 模块 函数 说明 os.path.abspath(path) 返回绝对路径 os.path.basename(path) 返回文件名 os.path.commonpr ...

最新文章

  1. 深度学习已至“瓶颈”?英特尔:数据处理是一剂良药
  2. 如何提高3D点云目标检测的难例精度?
  3. 建造者模式(Builder)
  4. MindMotion MM32 单片机上的MicroPython移植-PWM
  5. 洛谷 1608 路径统计
  6. CNCF 官方大使张磊:Kubernetes 是一个“数据库”吗?
  7. python 修改字符串 循环_python – 模式匹配并用if else循环替换字符串
  8. python set
  9. python--字符/文本编码解码笔记
  10. json 潜逃 结构体_JSON还原为结构体 - osc_t5zhwnvx的个人空间 - OSCHINA - 中文开源技术交流社区...
  11. Xshell、Xfpt 官方下载与使用介绍
  12. SM3算法的C++实现(代码)
  13. 【线性代数】矩阵分解(Matrix Factorization)笔记:非负矩阵分解
  14. 图解PhotoView,从“百草园”到“三味书屋”!
  15. Redis(二) -- redis.conf详解(redis6)
  16. 数据库实验四:数据高级查询
  17. Docker入门讲解
  18. 全球通胀对IT领域的影响
  19. 图解向量场、散度、旋度(二维平面)
  20. 台积电5nm光刻技术

热门文章

  1. css内行样式、外部样式、内部样式
  2. 管理学中的纳什均衡理论分享
  3. 怎么调大计算机浏览器内字体,电脑浏览器怎么设置字体大小
  4. matlab双纵坐标的绘图命令_MATLAB画双纵坐标
  5. 一本通1646GT 考试
  6. JDK自带JVM工具
  7. day08学习 Python文件函数、CSV文件读写
  8. 实现太阳系行星公转动画实例(CSS+HTML5 源码)
  9. mysql 军规_关于MySql的军规
  10. BUUCTF-刷题记录-7