一.转义符 "\""

  正则中的转义:

  1. '\(' :表示匹配小括号

  2.[ () + * ? / $ .]: 在字符组中的一些特殊的字符会出现原形  注意:除了'^'

  3.所有的 \w \d \s(\n,\t, ) \W \D \S都表示它原本的意义

  4.[-]只有写在字符组的首位的时候表示普通的减号

   写在其他的位置是表示范围[1-9]

   如果要匹配减号[1\-9]

  python中的转义:

  1.'\' 表示转义, '\n'表示给这个'n'赋予了特殊意义

  2.print('\\n')  结果为:\n  此时的\表示取消转义

  3.python中 r'\\n'表示取消转义

二.re模块

  1.findall , search, match

findall: 会优先显示()中的内容,要想取消分组优先,(?:正则表达式)

#findall的用法import re
ret = re.findall('\d+','19874ashfk01248')  #参数 返回值类型:列表 返回值个数:1 返回值内容:所有匹配上的项
print(ret)
ret1 = re.findall('\s+','19874ashfk01248') #没有匹配到,返回空列表
print(ret1)结果:
['19874', '01248']
[]

优先显示():
ret = re.findall('www.baidu.com|www.oldboy.com','www.oldboy.com')print(ret)ret = re.findall('www.(baidu|oldboy).com','www.oldboy.com')print(ret)ret = re.findall('www.(?:baidu|oldboy).com','www.oldboy.com')print(ret)

结果:

['www.oldboy.com']
['oldboy']
['www.oldboy.com']

search : 如果search中有分组的话,通过group(n)就能够拿到group中的匹配的内容

import re
ret2 = re.search('\d+','@$19874ashfk01248')
print(ret2)#  返回值类型: 正则匹配结果的对象  返回值个数:1 如果匹配上了就返回对象
if ret2:
print(ret2.group())  # 返回的对象通过group来获取匹配到的第一个结果

结果:
<_sre.SRE_Match object; span=(2, 7), match='19874'>
19874
ret3 = re.search('\s+','19874ashfk01248')
print(ret3) #  返回值类型: None   如果没有匹配上就是None

分组遇见search:
ret = re.search('\d+(.\d+)(.\d+)(.\d+)?','1.2.3.4-2*(60+(-40.35/5)-(-4*3))')
print(ret.group())
print(ret.group(0))# 0表示空和上面一样
print(ret.group(1))
print(ret.group(2))
print(ret.group(3))

match : 同search用法一样,不过仅在字符串开始处匹配

import re
ret4 = re.match('\d+','19874ashfk01248')
print(ret4.group())
ret5 = re.match('\d+','%^19874ashfk01248')
print(ret5)
结果:
19874
None

2.sub , subn , split

sub: 同replace一样,可以设置替换的次数

import re
ret = re.sub('\d+','H','replace789nbc2xcz392zx')
print(ret)
ret1 = re.sub('\d+','H','replace789nbc2xcz392zx,48495',1)
print(ret1)
结果:
replaceHnbcHxczHzx
replaceHnbc2xcz392zx,48495

subn: 返回一个元祖,并返回替换了多少次

import re
ret = re.subn('\d+','H','replace789nbc2xcz392zx')
print(ret)
结果:
('replaceHnbcHxczHzx', 3)

split: 匹配部分加()可以保留匹配项

import re
ret = re.split('\d+','alex83egon20taibai40')
print(ret)
ret = re.split('(\d+)','alex83egon20taibai40')
print(ret)
结果:
['alex', 'egon', 'taibai', '']
['alex', '83', 'egon', '20', 'taibai', '40', '']

3. compile finditer

complie: 编译,将正则表达式编译成为一个 正则表达式对象

    节省时间 : 只有在多次使用某一个相同的正则表达式的时候,这个compile才会帮助我们提高程序的效率

import re
ret = re.compile('-0\.\d+|-[1-9]\d+(\.\d+)?')
res = ret.search('alex83egon-20taibai-40')
print(res.group())
结果:-20

finditer: 节省空间

import re
ret = re.finditer('\d','sjkhkdy982ufejwsh02yu93jfpwcmc')
for r in ret:print(r.group())
结果:
9
8
2
0
2
9
3

三.分组命名

(?P<name>正则表达式)    :给分组起名字

(?P=name)  表示使用这个分组,这里匹配到的内容应该和分

import re
ret = re.search("<(?P<name>\w+)>\w+</(?P=name)>","<h1>hello</h1>")
print(ret.group('name'))  #结果 :h1
print(ret.group())  #结果 :<h1>hello</h1>

ret = re.search(r'<(?P<tag>\w+)>(?P<c>\w+)</(\w+)>',r'<a>wahaha</b>')
print(ret.group())
print(ret.group('tag'))
print(ret.group('c'))
结果:
h1
<h1>hello</h1>

通过索引使用分组:

   \1 表示使用第一组,匹配到的内容必须和第一个组中的内容完全相同

import re
ret = re.search(r"<(\w+)>\w+</\1>","<h1>hello</h1>")  '\1'指的是第一组,也就是h1
print(ret.group(1))
print(ret.group()) #结果 :
h1
<h1>hello</h1>

转载于:https://www.cnblogs.com/shuai1993/p/9438509.html

python中的正则表达式相关推荐

  1. Python中re(正则表达式)模块函数学习

    2019独角兽企业重金招聘Python工程师标准>>> Python正则表达式指南 今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的 ...

  2. [Python]网络爬虫(七):Python中的正则表达式教程(转)

    接下来准备用糗百做一个爬虫的小例子. 但是在这之前,先详细的整理一下Python中的正则表达式的相关内容. 正则表达式在Python爬虫中的作用就像是老师点名时用的花名册一样,是必不可少的神兵利器. ...

  3. [Python]网络爬虫(七):Python中的正则表达式教程

    接下来准备用糗百做一个爬虫的小例子. 但是在这之前,先详细的整理一下Python中的正则表达式的相关内容. 正则表达式在Python爬虫中的作用就像是老师点名时用的花名册一样,是必不可少的神兵利器. ...

  4. python中的正则表达式是干嘛的_python中正则表达式总结

    re.match():从字符串的开始进行匹配 re.search():扫描整个字符串返回第一个匹配 re.findAll():返回所有匹配的字符串 Pattern 对象不能实例化,只能通过compil ...

  5. Python中利用正则表达式做数据清洗(re)

    目录 1.常用正则表达式 Python中常用正则表达式 2.正则表达式做数据清洗 2.1 从网页HTML标签中提取文本 2.2 去掉英文文章中标点符号,提取词汇 2.3 提取以.com结尾的邮箱 1. ...

  6. 站长在线零基础Python完全自学教程20:在Python中使用正则表达式完全解读

    欢迎你来到站长学堂,学习站长在线出品的在线课程<零基础 Python完全自学教程>今天给大家分享的是第20课< 在Python中使用正则表达式完全解读>.本节课是一个大课,我分 ...

  7. Python中的正则表达式(翻译自DiveintoPython3)

    Python中的正则表达式(来自Dive into Python3) 利用python提供的最简单的字符串函数index(), find(), split(), count(), replace()等 ...

  8. 站长在线Python精讲:在Python中使用正则表达式的sub()方法替换字符串详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中使用正则表达式的sub()方法替换字符串详解>. 在Python中使用正则表达式的sub()方法替换字符串. ...

  9. 站长在线Python精讲:在Python中使用正则表达式的split()方法分割字符串详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中使用正则表达式的split()方法分割字符串详解>. 使用正则表达式分割字符串 在Python中使用正则表达 ...

  10. python中的正则表达式语法_Python基础教程之正则表达式基本语法以及re模块

    什么是正则: 正则表达式是可以匹配文本片段的模式. 正则表达式'Python'可以匹配'python' 正则是个很牛逼的东西,python中当然也不会缺少. 所以今天的Python就跟大家一起讨论一下 ...

最新文章

  1. wpf 窗口的返回值_如何:获取页函数的返回值
  2. AlertDialog 点击空白处、返回按钮 行为
  3. leetcode-6-Z 字形变换
  4. Android中实现APP文本内容的分享发送与接收方法简述
  5. 说说Android桌面(Launcher应用)背后的故事(九)——让我的桌面多姿多彩
  6. Packet Capture -- android 手机抓包利器
  7. echarts大屏模板_完整的可视化大屏分享,科技感十足,各行业直接就能用
  8. 【深度学习再突破】让计算机一眼认出“猫”:哈佛提出新高维数据分析法
  9. Exchange server 2007中启用pop3和IMAP4协议访问
  10. Word TOC域的使用说明
  11. Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之部署到Linux
  12. H-A + B用于投入产出实践(VIII)
  13. 从网上骂人言论看其浮躁无知的一面
  14. xp计算机内存条启动,加快XP启动
  15. 【HTML】网页错误码详细报错
  16. Python将字符串转换成dataframe
  17. 第二届电气、机械与计算机工程国际学术会议(ICEMCE2018)简单记录
  18. 基于Matlab绘制风向与风速的关系图
  19. 利用中文维基百科数据进行词语相似度word2vec实验
  20. 机器学习课程期末综合测评

热门文章

  1. 页面加载完毕相关信息淡入效果
  2. 比较高明的暗部提亮方法:选取暗部,滤色叠加
  3. router OS (ROS)命令中文手册
  4. 软件质量保证与测试笔记——江湖救急版
  5. 基于中间代码的优化中,循环的查找算法有哪些?循环优化的方法有哪些?举例说明。
  6. LaTeX入门最终集 :LaTeX格式的调整LaTeX中怎么打出数学公式LaTeX的各种上下标
  7. python处理teradata数据库_Teradata数据库——你需要了解的基础知识
  8. qml 自定义消息框_Qt qml 自定义消息提示框
  9. 服务器选哪个系统,服务器选择哪个操作系统
  10. http的“无连接”指的是_【38期】一份tcp、http面试指南,常考点都给你了