正则表达式

定义

正则表达式,又称规则表达式。在代码中常简写为regex、regexp或RE,计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

字符匹配

直接匹配
在进行匹配时我们可以用字符串进行直接匹配。

这里以https://regex101.com(正则表达式)举例
在这里插入图片描述

正则表达式中的字符(部分常用字符)

.(点)

默认情况下,.可以匹配除“\n”和“\r”之外的任何一个字符,在DOTALL模式(即S模式)中也能匹配换行符。
在这里插入图片描述
注:这里并不是(.)匹配到了hello word 123456这个字符串,而是(.)与hello world 123456中每个字符都能匹配。

import re
p=re.findall(".","\n")
print(p)
import re
p=re.findall(".","\n",re.S)
print(p)

对于以上两段代码,前者返回空列表,后者返回一个含“\n”的列表。(findall方法找出已给字符串中所有与正则表达式可匹配的字符,返回一个数组)

\

转义字符,将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, ‘n’ 匹配字符 ‘n’。’\n’ 匹配换行符。序列 ‘\’ 匹配 “”,而 ‘(’ 则匹配 “(”,(特殊字符转成普通字符,部分普通字符转成特殊字符)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[…]

字符集()字符类。对应的位置可以是字符集中任意字符。字符集中的字符可以逐个列出,也可以给出范围,如[abc]或[a-c]。第一个如果是^则表示取反,如[^abc]表示不是abc的其他字符。[]只能匹配列表中的一个。

所有特殊字符在字符集中都失去其原有的特殊含义。 在字符集中如果使用]、-或^,可以在前面加上反斜杠(\),或把]、-放在第一个字符,把^放在非第一个字符。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

字符集(可写在字符集中)
\d、\D

\d:数字,相当于[0-9]
\D:非数字,相当于[^\d]
在这里插入图片描述
在这里插入图片描述

\s、\S

\s:空白字符,相当于[<空格>\t\r\n\f\v]
\S:非空白字符,相当于[^\s]
在这里插入图片描述
在这里插入图片描述

\w、\W

\w:单词字符,相当于[A-Za-z0-9_]
\W:非单词字符,相当于[^\w]
在这里插入图片描述
在这里插入图片描述

数量词(用在字符或(…)之后)

贪婪:正则表达式匹配到一个字符后不会停止,会继续匹配,直到匹配完所有满足正则表达式的字符,若遇到不匹配的字符记为匹配零0次。

*(贪婪)

匹配前一个字符0或无限次
匹配0次
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

+(贪婪)

匹配前一个字符1次或无限次。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

?(非贪婪)

匹配前一个字符0次或1次
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

综合使用

句子中的某个字母
例:I love you中ve
在这里插入图片描述
时间戳
在这里插入图片描述

常用正则表达式的方法:

re.compile(编译)
re.match(从头找一个)
re.search(找一个)
re.findall(找所有)
re.sub(替换)

re.compile(“正则表达式”)
在这里插入图片描述
re.match(“正则表达式”,“字符串”)
在这里插入图片描述
re.search(“正则表达式”,“字符串”)
在这里插入图片描述

re.findall(“正则表达式”,“字符串”)
在这里插入图片描述

re.sub(“正则表达式”,“替换字符”,“被替换字符串”)
在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐