【Python】正则表达式

正则表达式简介

正则表达式是一种文本模式,包括普通字符(例如:a~Z之间的字母)和特殊字符(又称为"元字符")。正则表达式通常用来检索、替换那些匹配某个模式的字符串

正则表达式语法

正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串。

普通字符

普通字符包括没有显示指定标点为原符号的所有可打印和不可打印字符,包括所有大小写字母、数字、标点符号和其他一些符号。

要判断一个长度为1的字符串是否为英文大写字母,可以写作:

复制代码
[A-Z]

要判断一个长度为1的字符串是不是英文字母,这里就包含了大写和小写,可以写作:

复制代码
[A-Za-z]

要匹配字符串"Good afternoon"中的所有a、o、e字母,可以写作:

复制代码
[aoe]

要判断一个长度为2 的字符串是否为英文小写字母,可以写作:

复制代码
[a-z][a-z]

元字符

元字符就是在正则表达式中有特殊含义的字符,可以用来规定位于元字符前面的字符在目标对象中的出现模式

较为常用的元字符包括:"*"、"+"、"?"等

复制代码
ad*

表达式可以匹配"a"或者"add"

正则表达式有很多元字符,下表是常见的元字符【取一小部分】

|-----|------------------------|
| 元字符 | 描述 |
| ^ | 匹配输入字符串的开始位置 |
| ? | 匹配前面的字符零次或者一次 |
| + | 匹配前面的字符一次或者多次 |
| * | 匹配前面的字符零次或者多次 |
| $ | 匹配字符串结束的位置 |
| \D | 匹配一个非数字字符等价于\^0\~9 |
| \d | 匹配一个数字字符。等价于0\~9 |
| \r | 匹配一个回车符 |
| \f | 匹配一个换页符 |

限定符

限定符用来指正则表达式的一个给定组件必须要出现多少次才能满足匹配。有"*"、"+"、"?"、"{n}"、"{n,}""{n,m}"六种。

|-------|----------------------------------|
| 限定符 | 描述 |
| * | 限定符表示匹配前面的字符零次或者多次 |
| + | 限定符表示匹配前面的字符一次或者多次 |
| ? | 限定符表示匹配前面的字符零次或者一次 |
| {n} | 限定符匹配前面的字符n次,n是一个非负整数 |
| {n,} | 限定符至少匹配前面的字符n次,n是一个非负整数 |
| {n,m} | 限定符至少匹配前面的字符n次并且最多匹配m次,n,m均为非负整数 |

字符转义

有不少字符试图在对其进行匹配时需要进行特殊处理。要匹配这些字符,要先将这些字符转义,即在字符前面加上"\"。例如要匹配"{"本身,则用正则表达式为:

复制代码
[\{]

定位符

定位符能够将正则表达式固定到行首或者行尾,也可以创建只在单词内或者只在单词开头或者只在单词的结尾出现的正则表达式。

分组

小括号字符的第一个作用是可以改变限定符的作用范围。例如:(m|f)ood就是匹配单词mood或者food

小括号的第二个作用就是分组,也就是创建子表达式。例如(a-z{1,2}){3}就是重复操作三次。

在Python中使用正则表达式

在Python中使用正则表达式时i,是将其作为模式字符串使用的。例如,将匹配非数字的一个字符的正则表达式表示为模式字符串,可以写作:

复制代码
'[^0-9]'

将匹配以字母a开头的单词的正则表达式转换成模式字符串,不能直接在两侧添加引号定界符,需要将其中的"\"进行转义,可以写作:

复制代码
'\\ba\\w*\\b'

使用re模块实现正则表达式操作

匹配字符串

①使用match()方法进行匹配

语法格式如下:

复制代码
re.match(pattern,string,[flags])

pattern:表示模式字符串,由要匹配的正则表达式换来

string:表示要匹配的字符串

flags:可选参数,表示标志位。

②使用search()方法进行匹配

语法格式:

复制代码
re.search(pattern,string,[flags])

③使用findall()方法进行匹配

语法格式:

复制代码
re.findall(pattern,string,[flags])

替换字符

sub()方法用于实现字符串替换

语法格式如下:

复制代码
re.sub(pattern,rep1,string,count,flags)

使用正则表达式分隔字符串

split()方法用于实现根据正则表达式分隔字符串,并且以列表的形式返回.

语法格式如下:

复制代码
re.split(pattern,string,[maxsplit],[flags])
相关推荐
酷可达拉斯20 小时前
Linux操作系统-shell编程之Grep与正则表达式
linux·运维·服务器·正则表达式·centos
互联网中的一颗神经元4 天前
小白python入门 - 23. Python 正则表达式的应用
python·正则表达式
2501_936415695 天前
API-正则表达式&时间&包装类
正则表达式
鹤卿1238 天前
谓词与正则表达式(OC)
ios·正则表达式·objective-c·xcode
饼干哥哥11 天前
10.5% 深层转化、90%+ 新用户,ChatGPT Ads 值得吗?
算法·正则表达式·编程语言
饼干哥哥12 天前
Seedance TK视频「真人感」问题的 9 个解法
正则表达式·代码规范·设计
逝水无殇13 天前
C# 正则表达式详解
开发语言·后端·正则表达式·c#
木木子2217 天前
# 密码强度检测深度解析:正则表达式实时分析、多维度评分算法与可视化反馈
mysql·算法·华为·正则表达式·harmonyos
饼干哥哥18 天前
用Claude Code跑通跨境电商的5大场景,顶10个人的团队
人工智能·设计模式·正则表达式
饼干哥哥19 天前
单篇100万阅读文章,如何用AI 做好内容创作?
人工智能·正则表达式·代码规范