正则表达式库和第三方库

一、正则表达式库

正则表达式是一种表达式语句,用于对字符串类型数据进行操作,包含从字符串中筛选出满足表达式条件的信息、将字符串中的内容进行替换等功能,在python语言中用re库实现正则表达式,用import将re库导入代码程序中。

1.匹配字符串

match()函数

在re模块中,re.match(参数1, 参数2)会尝试从字符串的第一个字符开始匹配指定模式,只有当模式在字符串起始位置完全匹配时才返回参数1的内容,否则返回None。

使用形式:

python 复制代码
match(参数1,参数2)

示例:

python 复制代码
import re
# 从起始位置匹配成功​
print(re.match(r'abc', 'abcdef'))  #输出为 <re.Match object; span=(0, 3), match='abc'>​
# 非起始位置有匹配但返回None​
print(re.match(r'cde', 'abcdef'))  #输出为 None

search()函数

search()函数的功能是在整个字符串中查找第一个匹配项。search()会从字符串的起始位置开始对比,直到找到第一个符合的子串,然后返回包含匹配成功的信息;如果遍历完整个字符串仍未找到匹配,则返回None。

使用形式:

python 复制代码
search(参数1,参数2)

示例:

python 复制代码
import re
# 查找第一个数字序列​
text = '用户ID: 12345, 订单号: 67890'​
match = re.search(r'\d+', text)​
if match:​
    print(f"找到匹配: {match.group()}")  # 找到匹配: 12345​
    print(f"匹配位置: {match.span()}")    # 匹配位置: (6, 11)

findall()函数

使用形式:

python 复制代码
findall(参数1,参数2)

功能是从参数2(字符串类型数据)中查找满足参数1(正则表达式)的内容,如果匹配了多个参数1,则返回匹配成功的全部信息。

示例:

python 复制代码
import re
text = '用户A: 13800138000, 用户B: 13900139000, 用户C: 13700137000'
# 提取所有手机号
phones = re.findall(r'1[3-9]\d{9}', text)
print(phones)  # ['13800138000', '13900139000', '13700137000']

2.正则表达式

正则表达式 (Regular Expression) 是一种强大的文本处理工具,它通过定义特定模式来匹配、查找和替换文本。在 Python 中,无论是标准库re还是第三方库regex,都提供了丰富的 API 支持,使开发者能够高效处理各种复杂的文本场景。本文将从基础语法到高级应用,系统介绍 Python 中正则表达式的核心概念、使用技巧及最佳实践。

表示字符范围:

python 复制代码
[abc]  # 匹配a、b或c中的任意一个字符
[^abc] # 匹配除a、b、c之外的任意字符
[a-z]  # 匹配任意小写字母
[A-Z]  # 匹配任意大写字母
[0-9]  # 匹配任意数字
[a-zA-Z0-9] # 匹配任意字母或数字

表示字符出现次数:

python 复制代码
^      # 匹配字符串的起始位置
$      # 匹配字符串的结束位置
*      # 匹配前面的子表达式零次或多次
+      # 匹配前面的子表达式一次或多次
?      # 匹配前面的子表达式零次或一次
{n}    # 精确匹配n次
{n,}   # 至少匹配n次
{n,m}  # 匹配至少n次且最多m次

表示同一类字符:

python 复制代码
\d     # 等价于[0-9],匹配任意数字
\D     # 等价于[^0-9],匹配任意非数字字符
\s     # 等价于[\t\n\r\f\v],匹配任意空白字符(空格、制表符、换行符等)
\S     # 等价于[^\t\n\r\f\v],匹配任意非空白字符
\w     # 等价于[a-zA-Z0-9_],匹配任意字母、数字或下划线
\W     # 等价于[^a-zA-Z0-9_],匹配任意非字母、数字或下划线字符
a*     # 匹配零个或多个a(如:'', 'a', 'aa', 'aaa'等)
a+     # 匹配一个或多个a(如:'a', 'aa', 'aaa'等)
a?     # 匹配零个或一个a(如:'', 'a')
a{3}   # 精确匹配3个a(如:'aaa')
a{3,}  # 匹配至少3个a(如:'aaa', 'aaaa', 'aaaaa'等)
a{3,5} # 匹配3到5个a(如:'aaa', 'aaaa', 'aaaaa')

3.贪婪模式和非贪婪模式

默认情况下,量词是贪婪的,即尽可能多地匹配字符。通过在量词后添加?,可以将其变为非贪婪模式,即尽可能少地匹配字符:

示例:

python 复制代码
text = '<div>内容</div>'
# 贪婪匹配(默认)
re.findall(r'<.*>', text)  # 结果: ['<div>内容</div>']
# 非贪婪匹配
re.findall(r'<.*?>', text) # 结果: ['<div>', '</div>']

4.或和组

在 Python 正则表达式中,"或"和 "组"是构建复杂模式的两大核心机制。"或" 允许在模式中定义多个可选分支,而 "组" 则用于将多个字符作为一个整体处理,并支持捕获匹配内容。

"或" 操作符(|)的用法与特性

在正则表达式中,竖线|用于表示 "或" 关系,允许匹配多个模式中的任意一个。示例:

python 复制代码
import re
pattern = re.compile(r'apple|banana')  # 匹配apple或banana
text = 'I like apple and banana'
print(pattern.findall(text))  # ['apple', 'banana']

"或" 操作符的优先级较低,通常需要用括号进行分组以明确匹配范围,多个分支按从左到右的顺序进行匹配,一旦找到匹配项就停止搜索。因此,较长或更具体的模式应放在前面,在字符类[]内部,|表示普通字符而非 "或" 操作符。

"组"的类型与应用

使用()定义的捕获组会保存匹配的子串,可通过索引或名称引用

示例:

python 复制代码
# 数字索引引用
pattern = re.compile(r'(\d{4})-(\d{2})-(\d{2})')
text = '2023-10-05'
match = pattern.match(text)
print(match.group(1))  # '2023'(年)
# 命名组引用
pattern = re.compile(r'(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})')
print(match.group('month'))  # '10'

多层嵌套时,索引按左括号出现的顺序分配,在模式内部使用\1\2等语法引用前面的捕获组,使用(?:)定义的非捕获组仅用于分组,不保存匹配结果。

5.sub()和compile()方法

sub()用于替换字符串中的匹配项,示例:

python 复制代码
text = 'Hello 123, World 456'
pattern = re.compile(r'\d+')
print(pattern.sub('NUM', text))  # 'Hello NUM, World NUM'

compile()re模块中的核心函数,用于创建预编译的模式对象:

python 复制代码
import re
# 编译正则表达式
pattern = re.compile(r'正则表达式模式')
# 使用模式对象进行匹配
match = pattern.search('待匹配的文本')

二、第三方库

1.第三方库的介绍

在 Python 的技术生态中,第三方库是连接基础语法与实际应用的桥梁。这些由全球开发者社区贡献的代码集合,将 Python 的灵活性与扩展性发挥到极致,使其能够轻松应对从简单脚本到复杂系统的各类开发需求。本文将从定义本质、分类体系、技术价值和选择框架四个维度,全面剖析 Python 第三方库的核心特征。

数据科学与分析领域:从采集到可视化的全流程工具

人工智能与机器学习领域:从模型训练到部署的全链路支持

自动化与运维领域:从脚本到系统的效率工具

科学计算与工程领域:从仿真到可视化的专业工具

游戏开发与创意编程领域:从 2D 到 3D 的开发工具

2.不同领域的第三方库

Python 第三方库的生态之所以强大,在于其覆盖了几乎所有技术领域的解决方案。从 Web 开发到人工智能,从数据分析到嵌入式开发,每个领域都形成了各具特色的库集群。本文将深入剖析六大主流领域的核心库,解析其技术特点、适用场景及选型策略,为开发者提供全面的工具选择参考。

Web 开发领域:从后端到前端的全栈工具链​

3.第三方库的安装

常见的有2种:

通过win+r输入cmd打开命令指示符后写入以下形式:

python 复制代码
pip install 库名

但这样通常下载很慢,因为这里用的是外网,可以通过搜索中国网站下载库会快很多。

例如:pip install 库名称 -i https://pypi.tuna.tsinghua.edu.cn/simple

再一种就是通过pycharm的解释器下载第三方库,与上述方法差不多。

搜索所需要的第三方库,可以在选项中输入中国网站加快下载速度。

4.安装报错的解决方法

1.操作系统缺失支撑软件

解决方法:通过error错误提示下载缺失的支撑软件。

2.计算机的操作系统版本与第三方库的版本之间存在不兼容的情况。

解决方法:使用命令:

python 复制代码
pip install 库名 == 版本号

3.pip工具版本过低。

解决方法:通过命令:

python 复制代码
python -m pip install --upgrade pip

更新当前pip工具。

5.pip工具的常用命令

python 复制代码
pip uninstall 库名 #卸载库
pip list        #列出所有已安装的库
pip show 库名 #查看特定库的详细信息
pip download 库名 #下载第三方库安装包但不安装
-h  #获取pip使用帮助

6.Pyinstaller库

1.Pyinstaller库的介绍和安装

PyInstaller 是一个开源的 Python 库,能够将 Python 脚本打包成独立的可执行文件(.exe、.app 等),无需目标机器安装 Python 解释器或相关依赖库。其工作原理是分析脚本的依赖关系,将 Python 解释器、脚本本身及所有依赖文件打包到一个文件夹或单个可执行文件中,实现 "一次打包,到处运行" 的效果。

打开命令提示符(CMD)或 PowerShell​执行安装命令:

python 复制代码
# 使用pip安装最新版本
pip install pyinstaller

# 如需指定版本(例如5.13.2)
pip install pyinstaller==5.13.2

2.使用

PyInstaller 的命令结构简洁明了,核心语法为:

python 复制代码
pyinstaller 代码文件路径+代码文件名

3.其他Pyinstaller命令

-F:

使打包后只产生一个list文件夹,且文件夹中只存在一个打包后的可执行文件。

python 复制代码
pyinstaller -F 代码文件路径+代码文件名

-i:

用于指定可执行文件图标的实用参数,在程序窗口中添加图标。

python 复制代码
pyinstaller -i 代码文件路径+代码文件名
相关推荐
一百天成为python专家7 小时前
python正则表达式(小白五分钟从入门到精通)
数据库·python·正则表达式·pycharm·python3.11
山烛14 小时前
小白学Python,标准库篇——随机库、正则表达式库
开发语言·python·正则表达式·random·re·随机库·正则表达式库
之歆2 天前
Python-正则表达式-信息提取-滑动窗口-数据分发-文件加载及分析器-浏览器分析-学习笔记
python·学习·正则表达式
数字芯片实验室3 天前
分享一个可以学习正则表达式的网址:Pythex.org
学习·正则表达式
阿蒙Amon4 天前
C#正则表达式全面详解:从基础到高级应用
开发语言·正则表达式·c#
秋难降5 天前
Python 知识点详解(二)
数据库·python·正则表达式
nananaij6 天前
【Python基础入门 re模块实现正则表达式操作】
开发语言·python·正则表达式
咸鱼时日翻身6 天前
正则表达式
正则表达式
gnip8 天前
总结一期正则表达式
javascript·正则表达式