Python正则表达式

菜鸟教程地址

Python 正则表达式 | 菜鸟教程 (runoob.com)

正则在线测试地址

在线正则表达式测试 (oschina.net)

常用操作符

操作符
.           表示任何单个字符
[]          字符集,对单个字符给出取值范围      [abc]表示a、b、c,[a-z]表示a-z单个字符
[^]         非字符集。对单个字符给出排除范围     [^abc]表示非a或b或c的单个字符
*           前一个字符的0次或者无限次的扩展     abc*表示ab、abc、abcc、abcccc等等
+           前一个字符的1次或者无限次的扩展     abc+表示 abc、abccc、abcc、abccccc等
?          前一个字符的0次或者1次扩展          abc?表示 ab、abc
|           左右表达式中的任意一个             abc|def表示abc、def
{m}         扩展前一个字符m次                 ab{2}c表示abbc
{m,n}       扩展前一个字符m至n次(含n)        ab{1,2}c表示abc、abbc
^           匹配字符串开头                    ^abc表示abc在一个字符串的开头
$           匹配字符串结尾                    abc$表示abc在一个字符串的结尾
()          分组标记内部只能使用|操作符         (abc)表示abc ,(abc|def)表示abc、def
\d          数字,等价于[0-9]
\w          单词字符,等价于[A-Za-z0-9_]         表示字符小写大写的a-z 和数字0-9以及下划线_
\b          匹配一个单词边界,也就是指单词和空格间的位置。  例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。

正则实战练习

以0开头,然后是两个数字,然后是一个连字号"-",最后是8个数字

查找内容:    010-11111111
正则表达式: 0\d{2}-\d{8}
结果:
共找到 1 处匹配:
010-11111111查找内容:   1111010-11111111321
正则表达式: 0\d{2}-\d{8}
结果:
共找到 1 处匹配:
010-11111111查找内容:   010-11111
正则表达式: 0\d{2}-\d{8}
结果:
(没有匹配)

匹配以字母a开头的单词(注意是找单词,而不是在一个字符串中匹配字符)

查找内容:    hello,world,apple,banana,AirPods,await
正则表达式: \ba\w*\b
结果:
共找到 2 处匹配:
apple
await

匹配刚好6个字符的单词

查找内容:    hello,world,apple,banana,AirPods,await
正则表达式: \b\w{6}\b
结果:
共找到 1 处匹配:
banana

匹配1个或更多连续的数字

查找内容:    this is a number11121aaa
正则表达式: \d+  或者\d{1,}
结果:
共找到 1 处匹配:
11121

5位到12位QQ号

查找内容:    123456789125
正则表达式: ^[1-9]\d{4,11}$
结果:
共找到 1 处匹配:
123456789125

Python正则常用函数

re.match

从字符第一个开始匹配,匹配到返回对象,匹配不到返回None

testUrl = "http://www.baidu.com"
pattern = re.compile(r'b.*u')
print(re.match(pattern, testUrl))
print(re.match(r'http', testUrl))输出>>
None
<re.Match object; span=(0, 4), match='http'>

re.search

在字符串中搜索,返回匹配到的第一个对象,匹配不到返回None

testUrl = "http://www.baidu.com"
pattern = re.compile(r'b.*u')
print(re.search(pattern, testUrl))输出>>
<re.Match object; span=(11, 16), match='baidu'>

re.sub

替换字符串中的匹配的字符,返回替换后的字符串

testUrl = "http://www.baidu.com"
print(re.sub(r'\W+', "", testUrl))输出>>
httpwwwbaiducom

re.findall

返回所有匹配的结果列表

testUrl = "http://www.baidu.com"
print(re.findall(r'\w{4}', testUrl))输出>>
['http', 'baid']

实战

获取百度首页,匹配title标签中的内容

import requeststestUrl = "http://www.baidu.com"
req = requests.get(testUrl)
pattern = r'<title>(.*?)</title>'
print(re.findall(pattern, req.content.decode('utf-8')))输出>>
['百度一下,你就知道']

Python正则表达式相关推荐

  1. Python 正则表达式各种特殊符号 重点

    Python 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. r ...

  2. python 正则表达式 re.compile() 的使用

    1 re.compile() 的解释: python 正则表达式 re.compile() 将正则表达式编译成一个Pattern规则对象,单独使用compile 没有意义,他生成的是一个规则,需要ma ...

  3. Python正则表达式,看这一篇就够了

    作者 | 猪哥 来源 | 裸睡的猪(ID: IT--Pig) 大多数编程语言的正则表达式设计都师从Perl,所以语法基本相似,不同的是每种语言都有自己的函数去支持正则,今天我们就来学习 Python中 ...

  4. Python 正则表达式

    最近研究Python爬虫,很多地方用到了正则表达式,但是没好好研究,每次都得现查文档.今天就专门看看Python正则表达式.本文参考了官方文档 re模块. 模式 首先正则表达式的语法我就不说了,这玩意 ...

  5. Python正则表达式初识(二)

    前几天给大家分享了[Python正则表达式初识(一)],介绍了正则表达式中的三个特殊字符"^"."."和"*",感兴趣的伙伴可以戳进去看看, ...

  6. python正则表达式需要模块_使用Python正则表达式模块,让操作更加简单

    处理文本数据的一个主要任务就是创建许多以文本为基础的特性. 人们可能想要在文本中找出特定格式的内容,比如找出存在于文本中的电子邮件,或者大型文本中的电话号码. 虽然想要实现上述功能听起来很繁琐,但是如 ...

  7. python正则表达式re.sub用法

    python正则表达式re.sub用法 https://cloud.tencent.com/developer/article/1382055 python正则表达式re.sub用法 全面的 http ...

  8. 【Python】一文读懂Python正则表达式常用用法

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 编辑:爱学AI 来源:geekvi   链接: www.segmentfault.co ...

  9. Python正则表达式常用的15个符号整理

    http://blog.itpub.net/31403259/viewspace-2157778/ Python正则表达式常用的15个符号整理: 1. ? 匹配0次或一次前面的分组(问号在正则表达式中 ...

  10. Python正则表达式使用的四个基本步骤

    http://blog.itpub.net/31403259/viewspace-2157701/ Python正则表达式使用的四个基本步骤     1.用import re导入正则表达式模块     ...

最新文章

  1. IOS沙盒Files目录说明和常用操作
  2. mac node版本管理
  3. 既然安卓是开源的 为何华为要 鸿蒙,安卓靠开源、免费赢得了天下,现在华为鸿蒙也是开源免费的! - 区块网...
  4. [转]Cocos2d-x观察者模式
  5. 如何快速完成整理笔记?
  6. 带你少走弯路:强烈推荐的Pytorch快速入门资料和翻译(可下载)
  7. 分布式系统优势及衡量指标
  8. android tag的使用方法,Android:如何使用Html.TagHandler?
  9. 沙洋有几个微服务群_集群 分布式 微服务
  10. jQuery 的选择器 元素选择器
  11. 斯维尔密码狗使用方法(附安装资源)
  12. 尚硅谷大数据项目之Flink实时数仓-踩坑记录和笔记记录
  13. 神通广大、卓有奇效的“mini-KMS_Activator_v1.051”(迷你KMS)初现江湖
  14. VCL语法教程——5.手持式1311编程器的支持
  15. QT3D场景快速绘制入门学习
  16. 你不能做宅男,因为你穷
  17. 【剑桥摄影协会】色彩管理之色彩空间
  18. ESP32 nvs 加密
  19. Oracle实例囚笼(Instance Caging)
  20. 怎么在一堆身份证中筛选出大于18岁的?

热门文章

  1. rtl驱动 ubuntu 禁用_ubuntu18.04系统中使用dkms安装wifi驱动rtl8723be的方法
  2. 交易系统开发(十二)——QuickFIX官方文档
  3. html 引入 svg矢量图,前端可视化——SVG矢量图技术
  4. elasticsearch 版本区别
  5. OpenStack在天河二号的大规模部署实践(转)
  6. 使用词向量嵌入模型,获得近义词
  7. S71500 PLC 与第三方设备 ModbusTCP 项目调试记录
  8. Mysql/Oracle——常用SQL语句
  9. 计算机专业毕业论文结尾,计算机毕业论文最后的总结.docx
  10. 如何写好一个综述,以一个综述为例