re模块

6.13自我总结

1.re模块

1.re.findall()

1.基本用法

re.findall(正则匹配的格式,匹配的对象)

2.正则匹配常用格式

1.^

只匹配开头在多行模式中匹配每一行的开头

2.a|b

匹配的格式a或者b

3[]

  • [a,b]匹配的格式a或者b如果ab为多个值他会把里面的东西打散
  • [1-9]数字1-9
  • [a-z]字母a-z
  • [A-Z]字母A-Z
  • [^x]内容不等于x

4.$

a$ 匹配已a 结尾的

5..

代表任意字符

6.{}

  • {n}代表大括号前字符n个
  • {n,m}代表大括号前字符n-m个
  • {n,}代表大括号前字符n-多个
  • {+,}代表大括号前字符1-多个
  • {0,}代表大括号前字符0-多个

7.*

代表前面字符0-无穷大个

8.+

代表前面字符1-无穷大个

9.?

  • a?代表a字符0-1个
  • ?a,前面值是+或者*的时候?匹配内容a结束

10.特殊序列符号

特殊序列符号

意义

\A

只在字符串开始进行匹配(多行字符串值匹配第一行)

\Z

只在字符串结尾进行匹配(多行字符串只匹配最后一行)

\b

匹配位于开始或结尾的空字符串

\B

匹配不位于开始或结尾的空字符串

\d

相当于[0-9]

\D

相当于[^0-9]

\s

匹配任意空字符:[\t\n\r\r\v]

\S

匹配任意非空字符:[^\t\n\r\r\v]

\w

匹配任意数字和字母:[a-zA-Z0-9]

\W

匹配任意非数字和字母:[^a-zA-Z0-9]

11.()

括号里面什么到时候取什么

12.re.findall(正则匹配的格式,匹配的对象,re.S)

re.S的作用:

不使用re.S时,则只在每一行内进行匹配,如果存在一行没有,就换下一行重新开始,使用re.S参数以后,正则表达式会将这个字符串看做整体,在整体中进行匹配

import re
a = """sdhellolsdlfsdfiooe:
yy988989pythonafsf"""
b = re.findall('hello(.*?)python',a)
c = re.findall('hello(.*?)python',a,re.S)
print (b)
print(c)
输出结果:
b:[]
c:['lsdlfsdfiooe:\nyy988989']

其他参数

修饰符

描述

re.I

使匹配对大小写不敏感

re.L

做本地化识别(locale-aware)匹配

re.M

多行匹配,影响 ^ 和 $

re.S

使 . 匹配包括换行在内的所有字符

re.U

根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.

re.X

该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解

2.re.match和re.search

# match 和 search的区别,mathch从开头开始匹配找一个,search搜索所有找第一个

3.re.compile

定义某种搜索格式
res1 = re.compile('\d+')
res1.findall(查找对象)等同于re.findall('\d+',查找对象)

4.re.split()

就是字符串的split方法,区别是可以使用正则表达式去替换

5.re.sub和re.subu

就是字符串的replace方法,区别是可以使用正则表达式去替换

import re

s = '猪八戒的媳妇是1高翠兰,孙悟空的媳妇是2白骨精,唐僧的媳妇是3女儿国王,沙悟净6没有媳妇(py9的学生们)'

print(re.sub('\d','',s))

print(re.subn('\d','',s))  # 除了会修改内容,还会返回修改了多少次
猪八戒的媳妇是高翠兰,孙悟空的媳妇是白骨精,唐僧的媳妇是女儿国王,沙悟净没有媳妇(py的学生们)
('猪八戒的媳妇是高翠兰,孙悟空的媳妇是白骨精,唐僧的媳妇是女儿国王,沙悟净没有媳妇(py的学生们)', 5)

6.对照表

语法

意义

说明

"."

任意字符

"^"

字符串开始

'^hello'匹配'helloworld'而不匹配'aaaahellobbb'

"$"

字符串结尾

与上同理

"*"

0 个或多个字符(贪婪匹配)

<*>匹配<\title>chinaunix</title>

"+"

1 个或多个字符(贪婪匹配)

与上同理

"?"

0 个或多个字符(贪婪匹配)

与上同理

*?,+?,??

以上三个取第一个匹配结果(非贪婪匹配)

<*>匹配<\title>

{m,n}

对于前一个字符重复m到n次,{m}亦可

a{6}匹配6个a、a{2,4}匹配2到4个a

{m,n}?

对于前一个字符重复m到n次,并取尽可能少

‘aaaaaa’中a{2,4}只会匹配2个

"\"

特殊字符转义或者特殊序列

[]

表示一个字符集

[0-9]、[a-z]、[A-Z]、[^0]

"|"

A|B,或运算

(...)

匹配括号中任意表达式

(?#...)

注释,可忽略

(?=...)

Matches if ... matches next, but doesn't consume the string.

'(?=test)' 在hellotest中匹配hello

(?!...)

Matches if ... doesn't match next.

'(?!=test)' 若hello后面不为test,匹配hello

(?<=...)

Matches if preceded by ... (must be fixed length).

'(?<=hello)test' 在hellotest中匹配test

(?<!...)

Matches if not preceded by ... (must be fixed length).

'(?<!hello)test' 在hellotest中不匹配test

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SIGAI学习与实践平台

基于随机游走的图匹配算法

图匹配是计算机视觉和模式识别领域重要的NP难问题。本文主要介绍了基于随机游走的图匹配算法RRWM [1]以及它在超图匹配上的扩展RRWHM [2]。

56340
来自专栏python爱好部落

python之异常处理

我们在编码或者做产品的时候,不仅要考虑正向的,还要考虑到异常情况下如何处理。人生也是如此,成功的时候要考虑落败时,这样考虑问题就全面,周全。

11630
来自专栏Jerry的SAP技术分享

SAP ABAP SE16 and SE17

版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)

9220
来自专栏灵魂画师牧码

画解算法:219. 存在重复元素 II

https://leetcode-cn.com/problems/contains-duplicate-ii/

9430
来自专栏灵魂画师牧码

画解算法:15. 三数之和

给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组...

10320
来自专栏happyJared

AQS

AQS 的全称为(AbstractQueuedSynchronizer),这个类在 java.util.concurrent.locks 包下面。

18440
来自专栏灵魂画师牧码

画解算法:58. 最后一个单词的长度

https://leetcode-cn.com/problems/length-of-last-word/

8420
来自专栏腾讯技术工程官方号的专栏

首届腾讯运维技术开放日!对外报名正式启动!

? 服务不停歇,运维不休息。 运维的工作长达7*24 小时,故而每年的 7月24日被视为运维日,代表着运维全天候的保障系统稳定、维护业务正常运行、时刻准备着...

20530
来自专栏python爱好部落

python中的小秘

最开始也不知道上下文管理器是干什么的,这样翻译过来很难懂。 with有跟从的意思,后面我的理解就是秘书,随从。 他的作用就是鞍前马后跑腿的人。

8430
来自专栏腾讯数据库技术

MySQL-8.0执行器及其改进

首先我们介绍一下iterator模型。在编程语言中的iterator模型是一种遍历对象列表常用的数据模型,尤其在数据源大小未知或者数据量过大不适合一次性加载所有...

28040

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励