Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Python 教程

Python 主页 Python 简介 Python 入门 Python 语法 Python 注释 Python 变量 Python 数据类型 Python 数字 Python 类型转换 Python 字符串 Python 布尔值 Python 运算符 Python 列表 Python 元组 Python 集合 Python 字典 Python If...Else Python While 循环 Python For 循环 Python 函数 Python Lambda Python 数组 Python 类/对象 Python 继承 Python 迭代器 Python 多态 Python 作用域 Python 模块 Python 日期 Python 数学 Python JSON Python 正则表达式 Python PIP Python Try...Except Python 用户输入 Python 字符串格式化

文件处理

Python 文件处理 Python 读取文件 Python 写入/创建文件 Python 删除文件

Python 模块

NumPy 教程 Pandas 教程 SciPy 教程 Django 教程

Python Matplotlib

Matplotlib 简介 Matplotlib 入门 Matplotlib Pyplot Matplotlib 绘图 Matplotlib 标记 Matplotlib 线 Matplotlib 标签 Matplotlib 网格 Matplotlib 子图 Matplotlib 散点图 Matplotlib 条形图 Matplotlib 直方图 Matplotlib 饼图

机器学习

入门 平均数、中位数、众数 标准差 百分位数 数据分布 正态数据分布 散点图 线性回归 多项式回归 多元回归 缩放 训练/测试 决策树 混淆矩阵 层次聚类 逻辑回归 网格搜索 分类数据 K-means Bootstrap Aggregation 交叉验证 AUC - ROC 曲线 K-最近邻

Python MySQL

MySQL 入门 MySQL 创建数据库 MySQL 创建表 MySQL 插入 MySQL 选择 MySQL Where MySQL 排序 MySQL 删除 MySQL 删除表 MySQL 更新 MySQL 限制 MySQL 连接

Python MongoDB

MongoDB 入门 MongoDB 创建数据库 MongoDB 集合 MongoDB 插入 MongoDB 查找 MongoDB 查询 MongoDB 排序 MongoDB 删除 MongoDB 删除集合 MongoDB 更新 MongoDB 限制

Python 参考

Python 概述 Python 内置函数 Python 字符串方法 Python 列表方法 Python 字典方法 Python 元组方法 Python 集合方法 Python 文件方法 Python 关键字 Python 异常 Python 词汇表

模块参考

随机模块 请求模块 统计模块 数学模块 cMath 模块

Python 如何

删除列表重复项 反转字符串 添加两个数字

Python 示例

Python 示例 Python 编译器 Python 练习 Python 测验 Python 服务器 Python 面试问答 Python 集训营 Python 证书

Python 正则表达式


正则表达式,或简称为正则,是用来描述字符模式的字符序列。

正则表达式可以用来检查字符串是否包含指定的搜索模式。


正则表达式模块

Python 有一个内置的包叫做 re,它可以用来处理正则表达式。

导入 re 模块

import re

Python 中的正则表达式

导入 re 模块后,就可以开始使用正则表达式了

示例

搜索字符串以查看它是否以“The”开头并以“Spain”结尾

import re

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
尝试一下 »

正则表达式函数

re 模块提供了一组函数,允许我们搜索字符串中的匹配项

函数 描述
findall 返回一个包含所有匹配项的列表
search 如果字符串中存在匹配项,则返回一个 匹配对象
split 返回一个列表,其中字符串已在每个匹配项处拆分
sub 用字符串替换一个或多个匹配项


元字符

元字符是具有特殊含义的字符

字符 描述 示例 尝试一下
[] 一组字符 "[a-m]" 尝试一下 »
\ 表示特殊序列(也可以用来转义特殊字符) "\d" 尝试一下 »
. 任何字符(换行符除外) "he..o" 尝试一下 »
^ 以...开头 "^hello" 尝试一下 »
$ 以...结尾 "planet$" 尝试一下 »
* 零次或多次出现 "he.*o" 尝试一下 »
+ 一次或多次出现 "he.+o" 尝试一下 »
? 零次或一次出现 "he.?o" 尝试一下 »
{} 指定次数出现 "he.{2}o" 尝试一下 »
| "falls|stays" 尝试一下 »
() 捕获和分组    

特殊序列

特殊序列是 \ 后面跟着列表中的一个字符,具有特殊含义

字符 描述 示例 尝试一下
\A 如果指定的字符位于字符串开头,则返回匹配项 "\AThe" 尝试一下 »
\b 如果指定的字符位于单词的开头或结尾,则返回匹配项
(开头处的“r”确保字符串被视为“原始字符串”)
r"\bain"

r"ain\b"
尝试一下 »

尝试一下 »
\B 返回在指定字符出现的位置匹配,但不在单词的开头(或结尾)
(开头处的“r”确保字符串被视为“原始字符串”)
r"\Bain"

r"ain\B"
尝试一下 »

尝试一下 »
\d 返回字符串包含数字(0-9)的位置匹配 "\d" 尝试一下 »
\D 返回字符串不包含数字的位置匹配 "\D" 尝试一下 »
\s 返回字符串包含空格字符的位置匹配 "\s" 尝试一下 »
\S 返回字符串不包含空格字符的位置匹配 "\S" 尝试一下 »
\w 返回字符串包含任何单词字符(a 到 Z 的字符、0 到 9 的数字和下划线字符 _)的位置匹配 "\w" 尝试一下 »
\W 返回字符串不包含任何单词字符的位置匹配 "\W" 尝试一下 »
\Z 如果指定字符位于字符串的末尾,则返回匹配 "Spain\Z" 尝试一下 »

集合

集合是一组字符,位于一对方括号 [] 内,具有特殊含义

集合 描述 尝试一下
[arn] 返回存在指定字符之一 (a, rn) 的位置匹配 尝试一下 »
[a-n] 返回与任何小写字符匹配,该字符按字母顺序位于 an 之间 尝试一下 »
[^arn] 返回除 arn 之外的任何字符的匹配 尝试一下 »
[0123] 返回存在指定数字之一 (012 3) 的位置匹配 尝试一下 »
[0-9] 返回与 0 到 9 之间的任何数字匹配 尝试一下 »
[0-5][0-9] 返回与从 00 59 的任何两位数字匹配 尝试一下 »
[a-zA-Z] 返回与按字母顺序位于 az 之间的任何字符匹配,小写或大写 尝试一下 »
[+] 在集合中,+*.|()$,{} 没有特殊含义,因此 [+] 意味着:返回字符串中任何 + 字符的匹配 尝试一下 »

 

findall() 函数

函数 findall() 返回一个列表,其中包含所有匹配项。

示例

打印所有匹配项的列表

import re

txt = "The rain in Spain"
x = re.findall("ai", txt)
print(x)
尝试一下 »

该列表按发现的顺序包含匹配项。

如果未找到匹配项,则返回一个空列表

示例

如果未找到匹配项,则返回一个空列表

import re

txt = "The rain in Spain"
x = re.findall("Portugal", txt)
print(x)
尝试一下 »

 

search() 函数

函数 search() 在字符串中搜索匹配项,如果找到匹配项,则返回一个 匹配对象

如果有多个匹配项,则只返回第一个匹配项

示例

搜索字符串中的第一个空格字符

import re

txt = "The rain in Spain"
x = re.search("\s", txt)

print("第一个空格字符位于位置:", x.start())
尝试一下 »

如果未找到匹配项,则返回 None

示例

进行不会返回匹配项的搜索

import re

txt = "The rain in Spain"
x = re.search("Portugal", txt)
print(x)
尝试一下 »

 

split() 函数

函数 split() 返回一个列表,其中字符串已在每个匹配项处分割

示例

在每个空格字符处分割

import re

txt = "The rain in Spain"
x = re.split("\s", txt)
print(x)
尝试一下 »

您可以通过指定 maxsplit 参数来控制出现次数

示例

只在第一次出现时分割字符串

import re

txt = "The rain in Spain"
x = re.split("\s", txt, 1)
print(x)
尝试一下 »

 

sub() 函数

函数 sub() 将匹配项替换为您选择的文本

示例

将每个空格字符替换为数字 9

import re

txt = "The rain in Spain"
x = re.sub("\s", "9", txt)
print(x)
尝试一下 »

您可以通过指定 count 参数来控制替换次数

示例

替换前 2 次出现

import re

txt = "The rain in Spain"
x = re.sub("\s", "9", txt, 2)
print(x)
尝试一下 »

 

匹配对象

匹配对象是一个包含有关搜索和结果信息的 对象。

注意:如果未找到匹配项,则将返回 None 值,而不是匹配对象。

示例

进行将返回匹配对象的搜索

import re

txt = "The rain in Spain"
x = re.search("ai", txt)
print(x) # 这将打印一个对象
尝试一下 »

匹配对象具有用于检索有关搜索和结果的信息的属性和方法

.span() 返回一个元组,其中包含匹配项的开始位置和结束位置。
.string 返回传递给函数的字符串
.group() 返回字符串中存在匹配项的部分

示例

打印第一个匹配项出现的 位置(开始位置和结束位置)。

正则表达式查找以大写字母“S”开头的任何单词

import re

txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.span())
尝试一下 »

示例

打印传递给函数的字符串

import re

txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.string)
尝试一下 »

示例

打印字符串中存在匹配项的部分。

正则表达式查找以大写字母“S”开头的任何单词

import re

txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.group())
尝试一下 »

注意:如果未找到匹配项,则将返回 None 值,而不是匹配对象。



×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.