一、正则表达式

.                 任何单个字符

[]                字符集。比如[abc]表示a、b、c

[^ ]             非字符集。比如[^abc]表示不是a或b或c的字符

\d               数字。等价于[0-9]

\w              单词字符。等价于[A-Za-z0-9_]

二、re库

2.1 常用函数

#查找

re.findall(pattern, string, flags=0)        #搜索所有匹配结果,返回列表的形式。找不到,则返回空列表。

re.search(pattern, string, flags=0)      #搜索第一个匹配的结果。返回的是Match对象。

re.match(pattern, string, flags=0)        #类似于字符串中的startwith方法。搜索开头是不是匹配。返回的是Match对象。

re.finditer(pattern, string, flags=0)      #搜索所有匹配的结果。返回一个迭代器,遍历迭代器可以得到一个个Match对象。

#替换

re.sub(pattern, repl, string, count=0, flags=0)#类似于字符串中的replace方法。替换。在string中匹配pattern,然后替换成repl。

#切分

re.split(pattern, string, maxsplit=0, flags=0)#类似于字符串中的split方法,都是将一个字符串拆分成子字符串的列表。

2.1.1  re.findall()

re.findall(pattern, string, flags=0)      #搜索所有匹配结果,返回列表的形式【例1】。找不到,则返回空列表。【例2】

参数flags如下:

常用的就是re.I,可以忽略大小写。【例3】

【例1】

结果:

【例2】

结果:

【例3】

结果:

2.1.2 re.search()

re.search(pattern, string, flags=0)           #搜索第一个匹配的结果。返回的是Match对象【例1】。如果匹配不到,则返回None.【例2】

Match对象是一次匹配的结果,包含匹配的很多信息:

【例1】

结果:

【例2】

结果:

2.1.3 re.match()

re.match(pattern, string, flags=0)            #类似于字符串中的startwith方法。搜索开头是不是匹配。返回的是Match对象。【例1】

例1:

结果:

2.1.4 re.finditer()

re.finditer(pattern, string, flags=0)           #搜索所有匹配的结果。返回一个迭代器,遍历迭代器可以得到一个个Match对象。【例1】

例1:

结果:

2.1.5 re.sub()

re.sub(pattern, repl, string, count=0, flags=0)           #类似于字符串中的replace方法,返回替换后的字符串。【例1】

pattern:要替换的串

repl:        替换成的串

string:     待匹配的字符串

count:     匹配的最大替换次数。【例2】

例1:

结果:

例2:

结果:

2.1.6 re.split()

re.split(pattern, string, maxsplit=0, flags=0)#类似于字符串中的split方法,都是将一个字符串拆分成子字符串的列表。【例1】【例2】

maxsplit:   最大分割数,剩余部分作为最后一个元素输出。

例1:

结果:

例2:

结果:

!和空格中间有一个空字符。

例3:

结果:

2.2 re库的另一种用法

2.1中是直接使用函数。但是还有一种方法更常用,就是首先使用re.compile()函数,将正则表达式的字符串形式编译成正则表达式对象,然后再使用这个对象的函数。

这样的话,就可以一次编译,多次操作。更好一点。

步骤一:regex = re.compile(pattern, flags=0)

步骤二:调用regex的方法,有:

例:

结果:

2.3 贪婪匹配

如果同时匹配到长度不同的多项,返回哪一个呢?

Re库默认采用贪婪匹配,即输出匹配最长的子串。【例1】【例3】

如何输出最短的子串呢?【例2】【例3】

• 只要长度输出可能不同的,都可以通过在操作符后增加?变成最小匹配

例1:

结果:

例2:

结果:

例3:

结果:

2.4 分组

分组就是用一对圆括号“()”括起来的正则表达式,匹配出的内容就表示一个分组。从正则表达式的左边开始看,看到的第一个左括号“(”表示第一个分组,第二个表示第二个分组,依次类推,需要注意的是,有一个隐含的全局分组(就是0),就是整个正则表达式。

注意:group(0)是整个匹配的结果,也就是不分组时的结果。

group(1)才是第一组的结果。

groups()是所有组的结果,放到了一个元组中。

例如:如果想把区号从匹配的电话号码中分离,可以添加括号在正则表达式中创建分组,再使用group()方法,从一个分组中获取匹配的文本。

结果:

python内置模块re_常用内置模块(11):正则表达式、re模块相关推荐

  1. python常用内置模块-Python基础-22常用内置模块

    22. 常用内置模块 22.1 random模块 随机数据可以用于数学.测试.安全.算法等领域中.内置random模块,可用于生成伪随机数. 真正意义上的随机数或随机事件是在某次产生过程中是按照实验过 ...

  2. python内置模块_python_常用内置模块

    一.time模块(时间模块): 表示时间的三种方法: 在Python中,通常有这三种方式来表示时间:时间戳.元组(struct_time).格式化的时间字符串: (1)时间戳(timestamp) : ...

  3. python常用内置模块-python 常用内置模块使用

    python模块分类:1,标准库2,开源模块3,自定义模块 python 常用内置模块使用 1,time与datetime获取时间戳: time.time() 时间元组: time.localtime ...

  4. python常用内置模块-Python常用内置模块之xml模块

    xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标记语言被设计用来显示 ...

  5. python常用内置模块-Python常用内置模块之xml模块(详解)

    xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标记语言被设计用来显示 ...

  6. Python(十三)- 常用内置模块与第三方库

    python具有庞大的用户群,因其语法简洁,开发效率高而备受欢迎,同样,它的标准库与第三方库的支持也比较完善. 这里做些简单的整理. 常用内置模块与第三方库 一般存放于Python安装目录下的 lib ...

  7. python正则表达式模块_Python常用模块——正则表达式re模块

    Python常用模块--正则表达式re模块 引子 请从以下文件里取出所有的手机号 姓名 地区 身高 体重 电话 况咏蜜 北京 171 48 13651054608 王心颜 上海 169 46 1381 ...

  8. Python17个常用内置模块总结 (运维)

    <--目录--> 1.getpass 2.os 3.sys 4.subprocess 5.hashlib 6.json 7.pickle 8.shutil 9.time 10.dateti ...

  9. 【Nodejs】学习之常用内置模块

    文章目录 内置http模块 监听主机和端口号 response对象 返回响应结果 返回状态码 响应头文件 request对象 URL的处理 http发送网络请求 内置url模块 获取query参数 使 ...

最新文章

  1. 怎么用迅雷下载python_我是如何使用python控制迅雷自动下载电影的?
  2. 基克的聚合 机器人_新版本辅助装大改 基克的聚合不能错过
  3. 使用小型变压器的线圈设计实验磁标初步实验
  4. bzoj5368 [Pkusc2018]真实排名
  5. OpenCV-裁剪图片
  6. OpenCV中findContours函数的使用
  7. 使用vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
  8. python人脸关键点识别_用Face++实现人脸关键点检测
  9. 华为云薛浩:媒体业务进入全面云化时代,云原生成为必然选择
  10. 源代码 oa办公系统jsp_【程序源代码】经典的办公系统开发框架
  11. Go编程笔记(28)
  12. Pandas速查手册中文版API
  13. springboot 返回二进制文件流
  14. 以核心素养为导向的计算机教学方式,“雨花学术论坛”再开讲:让核心素养在课堂“落地生根”...
  15. 带你了解什么是MySQL数据库(八)数据库锁机制
  16. 一个arm64国产化工控机工程的移植总结
  17. 【NOI2011】阿狸的打字机
  18. 什么是GPT,如何克隆GPT类型的磁盘?
  19. 王力宏 谭维维-缘分一道桥 【超品质MP3】
  20. mac电脑安装python_-mac电脑怎么安装python

热门文章

  1. Linux服务器的最大内存和CPU数
  2. [转]调试AngularJS应用
  3. WEB程序员需要掌握的十大MySQL优化技巧
  4. SCCM2012之客户端发现与安装
  5. 2019杭电暑假多校训练 第六场 Snowy Smile HDU - 6638
  6. Winform Textbox实现滚动条始终在最下面
  7. Vue.js中 computed 和 methods 的区别
  8. 做接口测试最重要的知识点
  9. NSOprationQueue 与 GCD 的区别与选用
  10. bzoj1116 [POI2008]CLO