Python 教程

Python 教程 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 JSON Python 正则表达式 Python PIP Python Try...Except Python 用户输入 Python 字符串格式化

Python 文件处理

Python 文件处理 Python 打开文件 Python 创建/写入文件 Python 删除文件

Python NumPy

NumPy 简介 NumPy 入门 NumPy 创建数组 NumPy 数组索引 NumPy 数组裁切 NumPy 数据类型 NumPy 副本 vs 视图 NumPy 数组形状 NumPy 数组重塑 NumPy 数组迭代 NumPy 数组连接 NumPy 数组拆分 NumPy 数组搜索 NumPy 数组排序 NumPy 数组过滤 NumPy 随机数 NumPy ufunc 通用函数

Python SciPy

SciPy 简介 SciPy 入门 SciPy 常量 SciPy 优化器 SciPy 稀疏数据 SciPy 图表 SciPy 空间数据 SciPy Matlab 数组 SciPy 插值 SciPy 统计显着性检验

Python 机器学习

Machine 机器学习入门 Machine 平均中位数模式 Machine 标准差 Machine 百分位数 Machine 数据分布 Machine 正态数据分布 Machine 散点图 Machine 线性回归 Machine 多项式回归 Machine 多元回归 Machine 缩放 Machine 训练/测试 Machine 决策树

Python MySQL

MySQL 入门 MySQL Create Database MySQL Create Table MySQL Insert MySQL Select MySQL Where MySQL Order By MySQL Delete MySQL Drop Table MySQL Update MySQL Limit MySQL Join

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 词汇表

Python 模块参考

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

Python 如何使用

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

Python 高级教程

Python 常用指引 将Python2代码迁移到Python3 将扩展模块移植到 Python3 Curses 编程 描述器使用指南 函数式编程指引 日志常用指引 日志操作手册 正则表达式使用指南 套接字编程指南 排序指南 Unicode 指南 如何利用urllib包获取网络资源 Argparse 教程 ipaddress 模块介绍 Argument Clinic 的用法 使用DTrace和SystemTap检测CPython 对象注解属性的最佳实践

Python 实例

Python 实例 Python 编译器 Python 练习 Python 测验 NumPy 测验 SciPy 测验


Python 正则表达式

RegEx 或正则表达式是形成搜索模式的字符序列。

RegEx 可用于检查字符串是否包含指定的搜索模式。


RegEx 模块

Python 提供名为 re 的内置包,可用于处理正则表达式。

导入 re 模块:

import re

Python 中的 RegEx

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

实例

检索字符串以查看它是否以 "The" 开头并以 "Spain" 结尾:

import re

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

RegEx 函数

re 模块提供了一组函数,允许我们检索字符串以进行匹配:

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

元字符

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

字符 描述 实例 试一试
[] 一组字符 "[a-m]" 亲自试一试 »
\ 示意特殊序列(也可用于转义特殊字符) "\d" 亲自试一试 »
. 任何字符(换行符除外) "he..o" 亲自试一试 »
^ 起始于 "^hello" 亲自试一试 »
$ 结束于 "world$" 亲自试一试 »
* 零次或多次出现 "aix*" 亲自试一试 »
+ 一次或多次出现 "aix+" 亲自试一试 »
{} 确切地指定的出现次数 "al{2}" 亲自试一试 »
| 两者任一 "falls|stays" 亲自试一试 »
() 捕获和分组    

特殊序列

特殊序列指的是 \ 后跟下表中的某个字符,拥有特殊含义:

字符 描述 实例 试一试
\A 如果指定的字符位于字符串的开头,则返回匹配项 "\AThe" 亲自试一试 »
\b 返回指定字符位于单词的开头或末尾的匹配项 r"\bain"
r"ain\b"
亲自试一试 »
亲自试一试 »
\B 返回指定字符存在的匹配项,但不在单词的开头(或结尾处) 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" 亲自试一试 »

集合(Set)

集合(Set)是一对方括号 [] 内的一组字符,具有特殊含义:

集合 描述 试一试
[arn] 返回一个匹配项,其中存在指定字符(a,r 或 n)之一 亲自试一试 »
[a-n] 返回字母顺序 a 和 n 之间的任意小写字符匹配项 亲自试一试 »
[^arn] 返回除 a、r 和 n 之外的任意字符的匹配项 亲自试一试 »
[0123] 返回存在任何指定数字(0、1、2 或 3)的匹配项 亲自试一试 »
[0-9] 返回 0 与 9 之间任意数字的匹配 亲自试一试 »
[0-5][0-9] 返回介于 0 到 9 之间的任何数字的匹配项 亲自试一试 »
[a-zA-Z] 返回字母顺序 a 和 z 之间的任何字符的匹配,小写或大写 亲自试一试 »
[+] 在集合中,+、*、.、|、()、$、{} 没有特殊含义,因此 [+] 表示:返回字符串中任何 + 字符的匹配项 亲自试一试 »

 

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() 函数搜索字符串中的匹配项,如果存在匹配则返回 Match 对象。

如果有多个匹配,则仅返回首个匹配项:

实例

在字符串中搜索第一个空白字符:

import re

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

print("The first white-space character is located in position:", 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 参数来控制替换次数:

实例

替换前两次出现:

import re

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

 

Match 对象

Match 对象是包含有关搜索和结果信息的对象。

注释: 如果没有匹配,则返回值 None,而不是 Match 对象。

实例

执行会返回 Match 对象的搜索:

import re

txt = "The rain in Spain"
x = re.search("ai", txt)
print(x) #this will print an object
亲自试一试 »

Match 对象提供了用于取回有关搜索及结果信息的属性和方法:

.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,而不是 Match 对象。