正则表达式库
正则表达式(简称 Regex 或 Regexp)是一种强大的文本处理工具,用于对字符串进行模式匹配、查找、替换、分割等操作。在python中我们通过re库来实现它。
(1)匹配字符串
通过以下函数可以从字符串中查找符合正则表达式的子串。
- match()
match(参数1,参数2)
功能:表示从参数2(字符串)中(从第一个字符开始)查找满足参数1(正则表达式)的内容。
返回值:匹配失败返回None,匹配成功返回一个 匹配对象(Match object)
import re
result = re.match(r'Hello', 'Hello, world!')
print(result)
text = "Hello, world!"
result1 = re.match(r'world', text) # 尝试匹配 'world',但它不在开头
print(result1)
![]()
- search
search(参数1,参数2)
功能:表示从参数2(字符串)中查找满足参数1(正则表达式)的内容,果匹配多个参数,只返回第一个的信息
import re
sentence = "今天天气很好,适合出去玩"
result = re.search(r'天气', sentence)
print(result)
sentence1 = "今天天气很好,适合出去玩天气"
result1 = re.search(r'天气', sentence1)
print(result1)

- findall()
findall(参数1,参数2)
功能:查找所有符合某个正则表达式模式的子串,并以列表的形式返回所有匹配结果。
import re
sentence = "今天天气很好,适合出去玩天气"
result1 = re.findall(r'天气', sentence)
print(result1)
![]()
(2)正则表达式
通过正则表达式我们可以通过各种字符去筛选我想要的信息。
- 表示字符范围
[xyz]: 表示匹配所包含的任意一字符。
[a-z]:表示匹配指定范围内的所有字符。
import re
sentence = "Python is a programming language"
result1 = re.findall('[a-z]', sentence)
#输出为['y', 't', 'h', 'o', 'n', 'i', 's', 'a', 'p',
# 'r', 'o', 'g', 'r', 'a', 'm', 'm', 'i', 'n', 'g', 'l', 'a',
# 'n', 'g', 'u', # 'a', 'g', 'e']
result2 = re.findall('[abc]', sentence)
#输出为 ['a', 'a', 'a', 'a']
- 表示字符出现的次数
* | 匹配前面的元素 0 次或多次 | ab* 可以匹配 a, ab, abb, abbb... |
+ | 匹配前面的元素 1 次或多次 | ab+ 可以匹配 ab, abb, 但不能匹配 a |
? | 匹配前面的元素 0 次或 1 次(即可有可无) | colou?r 可以匹配 color 和 colour |
{n} | 匹配前面的元素 恰好 n 次 | a{3} 匹配 aaa |
{n,} | 匹配前面的元素 至少 n 次 | a{2,} 匹配 aa, aaa, ... |
{n,m} | 匹配前面的元素 n 到 m 次 | a{2,4} 匹配 aa, aaa, aaaa |
^ | 匹配字符串的开头 | ^Hello 匹配以 "Hello" 开头的字符串 |
$ | 匹配字符串的结尾 | world$ 匹配以 "world" 结尾的字符串 |
import re
sentence = "Python is a programming languaaaage"
result1 = re.findall('am+ing langua{1,3}', sentence)
result2 = re.findall('a{2}', sentence)
result3 = re.findall('^[P]y', sentence)
print(result1,'\n',result2,'\n',result3)

- 表示同一类字符
| 表达式 | 含义 | 等价写法 | 示例 |
|---|---|---|---|
\d | 数字字符(digit) | [0-9] | "1", "5" |
\D | 非数字字符(非 \d) | [^0-9] | "a", " ", "@" |
\w | 单词字符(word,包括字母、数字、下划线) | [a-zA-Z0-9_] | "a", "3", "_" |
\W | 非单词字符(非 \w) | [^a-zA-Z0-9_] | " ", "@", "+" |
\s | 空白字符(space,包括空格、制表符、换行等) | [ \t\n\r\f\v] | " ", "\t", "\n" |
\S | 非空白字符(非 \s) | [^ \t\n\r\f\v] | "a", "1", "@" |
\b | 单词边界(\w 和 \W 之间的位置) | \bword\b 匹配 "word" 但不匹配 "keyword" |
\B | 非单词边界(\w 和 \w 或 \W 和 \W 之间的位置) | \Bcat\B 匹配 "scatter" 中的 "cat" |
\n | 换行符(LF, Line Feed) | a\nb 匹配 "a" 后换行再 "b" |
\r | 回车符(CR, Carriage Return) | a\r\nb 匹配 Windows 换行 |
\t | 制表符(Tab) | a\tb 匹配 "a b"(Tab 分隔) |
\f | 换页符(Form Feed) | 很少使用 |
\v | 垂直制表符(Vertical Tab) | 很少使用 |
| . | 用于匹配 除换行符‘\n'和'\r'以外的任意单个字符 |
import re
pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
email = "邮箱名:[email protected]"
email1 = re.findall(pattern,email)
print(email1)
![]()
(3)贪婪模式和非贪婪模式
贪婪模式和非贪婪模式是正则表达式中两种重要的匹配策略,它们决定了量词(如 *, +, ?, {})如何匹配文本。
贪婪模式 (Greedy Mode)
特点:尽可能多地匹配字符(默认行为)
量词:* - 匹配前一个字符0次或多次(尽可能多),+ - 匹配前一个字符1次或多次(尽可能多),? - 匹配前一个字符0次或1次(尽可能多),{n,m} - 匹配前一个字符n到m次(尽可能多)
非贪婪模式 (Lazy Mode/Non-greedy Mode)
特点:尽可能少地匹配字符
表示方法:在量词后加 ?
量词:*? - 匹配前一个字符0次或多次(尽可能少),+? - 匹配前一个字符1次或多次(尽可能少),?? - 匹配前一个字符0次或1次(尽可能少),{n,m}? - 匹配前一个字符n到m次(尽可能少)
import re
# 贪婪模式
a=re.findall(r'<.*>', '<div>content</div>') # 匹配整个字符串
print(a)
# 非贪婪模式
b=re.findall(r'<.*?>', '<div>content</div>') # 匹配 ['<div>', '</div>']
print(b)

(4)sub()和compile()方法
re.sub() 和 re.compile() 是 Python re 模块中两个重要的正则表达式方法,它们分别用于字符串替换和正则表达式预编译。
import re
text = "Python 2.7 is old, use Python 3.10"
result = re.sub(r'\d\.\d+', '3.11', text)
print(result) # 输出: "Python 3.11 is old, use Python 3.11"
import re
pattern = re.compile(r'\d+') # 预编译正则表达式
result1 = pattern.findall("123 abc 456")
print(result1) # 输出: ['123', '456']
result2 = pattern.sub('X', "123 abc 456")
print(result2) # 输出: "X abc X"
第三方库
第三方库是 Python 生态系统的核心组成部分,它们极大地扩展了 Python 的功能和应用范围。
由 Python 社区开发者(非 Python 官方团队)创建和维护的 Python 模块/包,用于解决特定领域的问题或提供额外功能。
(1)第三方库的安装
在python中我们可以通过python自带的pip工具安装第三方库
# 查看已安装版本
pip show package_name
# 升级特定包
pip install --upgrade package_name
# 指定版本安装
pip install package_name==1.2.3
# 使用清华源
pip install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simple package_name
# 使用阿里云源
pip install 包名 -i https://mirrors.aliyun.com/pypi/simple/ package_name

可以直接在pycharm的终端使用命令安装但是必须确认想要安装的python版本通过python --version可以查看版本。
pip uninstall 包名 #卸载安装包
Pyinstaller库
PyInstaller 是一个流行的Python打包工具,可以将Python脚本转换为独立的可执行文件(Windows的.exe,macOS的.app,Linux的二进制文件),无需用户安装Python解释器。
在终端输入以下代码可以将python代码打包成程序
# 打包为单个文件
pyinstaller --onefile your_script.py
# 打包为单个文件且不显示控制台窗口(适合GUI应用)
pyinstaller --onefile --windowed your_script.py
# 自定义图标
pyinstaller --onefile --windowed --icon=app.ico your_script.py
# 自定义输出名称
pyinstaller --name=MyApp your_script.py
转载自CSDN-专业IT技术社区
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq1851417332/article/details/149665695



