文章目录

    • 1. 什么是模块和包?
    • 2. 常见的模块及其用法
      • 2.1 time
        • 概览
        • 2.1.1 时间获取方法
        • 2.1.2 时间格式化与解析
        • 2.1.3 程序计时与延迟
        • 2.1.4 时间转换
      • 2.2 random
        • 概览
        • 2.2.1 基本随机数
        • 2.2.2 随机整数
        • 2.2.3 序列操作
        • 2.2.4 概率分布
        • 2.2.5 随机种子
        • 2.2.6 状态管理
      • 2.3 os
        • 概览
        • 2.3.1 文件与目录操作
        • 2.3.2 路径处理
        • 2.3.3 系统信息与环境
      • 2.4 sys
        • 概览
        • 2.4.1 命令行参数处理
        • 2.4.2 标准输入/输出控制
        • 2.4.3 系统信息与配置
        • 2.4.4 程序流程控制
      • 2.5 json
        • 概览
        • 2.5.1 基本序列化与反序列化
        • 2.5.2 文件读写操作
        • 2.5.3 高级序列化控制

1. 什么是模块和包?


  • 模块是一个包含python代码的文件(后缀名.py),内容可以包括函数、类、变量等
# 文件名为hello.py
def func():print("hello world!")
func()

使用模块

import hello

  • 包是包含多个模块的目录,它通过__init__.py文件(可以是空文件)来标识这是一个Python包。
mypackage/
│── __init__.py
│── module1.py
│── module2.py
└── subpackage/│── __init__.py│── module3.py

使用包

from mypackage import module1,module2
from mypackage.subpackage import module3

2. 常见的模块及其用法

本文主要讲解模块有:time random os sys json

  1. time 时间处理
  2. random 生成随机数和实现随机选择功能
  3. os 操作系统交互
  4. sys 系统相关功能
  5. json JSON 数据处理

2.1 time

时间处理


概览
方法功能示例
time()时间戳,1970年1月1日00:00:00 UTC至今的秒数1753161307.4428105
ctime()获取可读的时间字符串“Tue Jul 22 13:15:07 2025"
localtime()获取结构化时间对象(包含年、月、日等字段)time.struct_time(tm_year=2025, tm_mon=7, tm_mday=22, tm_hour=13, tm_min=15, tm_sec=7, tm_wday=1, tm_yday=203, tm_isdst=0)
strftime("%Y-%m-%d %H:%M:%S",struct_time)时间格式化(字符串)“2025-07-22 13:33:09”
strptime(“2025-07-22”)时间解析“time.struct_time(tm_year=2025, tm_mon=7, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=203, tm_isdst=-1)”
perf_counter())精确计时(性能测试)耗时时间
sleep(2.5)程序暂停停顿2.5秒
localtime()时间戳 -> struct_time时间类型转化
mktime()struct_time -> 时间戳时间类型转化
2.1.1 时间获取方法
  1. time.time()
  • 功能:获取当前的时间戳(1970年1月1日00:00:00 UTC至今的秒数)
  • 示例
    import time
    print(time.time())  # 输出:1753161307.4428105(当前时间)
    
  1. time.ctime()
  • 功能:获取可读的时间字符串
  • 示例
print(time.ctime()) 
# 输出:“Tue Jul 22 13:15:07 2025”
  1. time.localtime()
  • 功能:获取结构化时间对象(包含年、月、日等字段)
  • 示例
struct_time = time.localtime()
print(struct_time.tm_year, struct_time.tm_mon,struct_time.tm_mday) 
# 输出:2025 7 22
2.1.2 时间格式化与解析
  1. time.strftime()
  • 功能:时间格式化
  • 示例
struct_time = time.localtime()
formatted = time.strftime("%Y-%m-%d %H:%M:%S",struct_time)
# 输出 2025-07-22 13:33:09
  1. time.strptime()
  • 功能:时间解析(字符串 -> struct_time)
  • 示例
parsed_time = time.strptime("2025-07-22", "%Y-%m-%d") 
print(parsed_time)
# 输出:
# time.struct_time(tm_year=2025, tm_mon=7, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=203, tm_isdst=-1)
2.1.3 程序计时与延迟
  1. time.pref_counter()
  • 功能:精确计时(性能测试)
  • 示例
start = time.perf_counter()
time.sleep(2)
end = time.perf_counter()
print(f"执行耗时:{end - start:.4f}秒")
# 输出:
# 执行耗时:2.0003秒
  1. time.sleep()
  • 功能:程序暂停
  • 示例
start = int(time.time())
time.sleep(2)
end = int(time.time())
print(f"停顿{end - start:.2f}秒")# 输出:
# 停顿2.00秒
2.1.4 时间转换
  1. 时间戳 -> struct_time
  • 方法:time.localtime()
  • 示例
timestamp = time.time()
ts_to_struct = time.localtime(timestamp)
print(ts_to_struct)# 输出:
# time.struct_time(tm_year=2025, tm_mon=7, tm_mday=22, tm_hour=13, tm_min=50, tm_sec=49, tm_wday=1, tm_yday=203, tm_isdst=0)
  1. struct_time -> 时间戳
  • 方法:time.mktime()
  • 示例
struct_time = time.localtime()
struct_to_ts = time.mktime(struct_time)
print(struct_to_ts)# 输出:
# 1753163493.0

2.2 random

生成随机数和实现随机选择功能

概览
方法功能示例
random()[0.0, 1.0) 的随机浮点数0.374501
uniform(a, b)[a, b] 的随机浮点数7.823
randint(a, b)[a, b] 的随机整数4
randrange(start, stop, step)指定范围的随机整数45
choice(seq)序列中的随机元素“green”
choices(population, k)有放回抽样[‘B’, ‘C’]
sample(population, k)无放回抽样[3, 1, 5]
shuffle(seq)原地打乱序列[‘K’, ‘A’, ‘J’, ‘Q’]
gauss(mu, sigma)高斯分布随机数0.735
seed(a)初始化随机种子固定随机序列
getstate() / setstate()保存/恢复状态重现随机序列
2.2.1 基本随机数
  1. random.random()
  • 功能:生成 [0.0, 1.0) 之间的随机浮点数。
  • 示例
    import random
    print(random.random())  # 输出:0.374501(随机值)
    

控制小数位数

  1. 内置函数/四舍五入
    round(random.random(), 3) # 默认 3 位小数
  2. 格式化
    formatted = f{random.random():.3f} # 默认 3 位小数
  1. random.uniform(a, b)
  • 功能:生成 [a, b] 之间的随机浮点数。
  • 示例
    print(random.uniform(2, 10))  # 输出:7.342(随机浮点数)
    

2.2.2 随机整数
  1. random.randint(a, b)
  • 功能:生成 [a, b] 之间的随机整数(包含两端)。
  • 示例
    print(random.randint(1, 10))  # 输出:3
    
  1. random.randrange(start, stop, step)
  • 功能:从 range(start, stop, step) 中随机选择一个整数 [start, stop) 左开右闭
  • 示例
    print(random.randrange(0, 100, 5))  # 输出:45(0,5,10,...,95 中的随机数)
    

2.2.3 序列操作
  1. random.choice(seq)
  • 功能:从非空序列中随机选择一个元素。
  • 示例
    colors = ['red', 'green', 'blue']
    print(random.choice(colors))  # 输出:'green'(随机颜色)
    
  1. random.choices(population, weights=None, k=1)
  • 功能:从序列中有放回地随机抽取 k 个元素(可设置权重)。
  • 示例
    result = random.choices(['A', 'B', 'C'], weights=[0.2, 0.5, 0.3], k=2)
    print(result)  # 输出:['B', 'C'](权重越高越可能被选中)
    
  1. random.sample(population, k)
  • 功能:从序列中无放回地随机抽取 k 个唯一元素。
  • 示例
    numbers = [1, 2, 3, 4, 5]
    print(random.sample(numbers, 3))  # 输出:[3, 1, 5](随机不重复的3个数)
    
  1. random.shuffle(seq)
  • 功能:将序列原地随机打乱(修改原序列)。
  • 示例
    cards = ['A', 'K', 'Q', 'J']
    random.shuffle(cards)
    print(cards)  # 输出:['K', 'A', 'J', 'Q'](顺序随机)
    

2.2.4 概率分布
  1. random.gauss(mu, sigma)
  • 功能:生成高斯分布(正态分布)的随机数,mu 为均值,sigma 为标准差。
  • 示例
    print(random.gauss(0, 1))  # 输出:0.735(标准正态分布中的随机值)
    
  1. random.expovariate(lambd)
  • 功能:生成指数分布的随机数,lambd 是事件发生率的倒数。
  • 用途: 多用于建模随机事件之间的时间间隔,尤其适合那些平均间隔已知但具体时间不确定的场景。
  • 示例
    print(random.expovariate(1.0/5))  # 输出:3.2(模拟平均每5秒发生一次的事件间隔)
    

2.2.5 随机种子
  1. random.seed(a=None)
  • 功能:初始化随机数生成器,相同种子生成相同随机序列(用于可重复性)。
  • 示例
    random.seed(42)  # 固定种子
    print(random.random())  # 输出:0.6394(每次运行结果相同)
    

2.2.6 状态管理
  1. random.getstate()random.setstate(state)
  • 功能:保存/恢复随机数生成器的内部状态。
  • 原理: 这是伪随机数生成器的典型行为,用于保证生成的随机数序列具有不可预测性和多样性
  • 示例
    state = random.getstate()  # 保存当前状态
    print(random.random())     # 随机数1
    random.setstate(state)     # 恢复状态
    print(random.random())     # 再次输出相同的随机数1
    

2.3 os

操作系统交互

概览
方法功能备注
mkdir()创建单级目录存在时创建的目录会报错
makedirs()创建多级目录exist_ok = True 已存在创建的目录不会报错
rename()重命名
remove()删除文件
scandir()目录遍历
walk()递归遍历目录
os.path.join()路径拼接
os.path.dirname() 、os.path.basename()、os.path.splitext()路径分解
os.path.exists、os.path.isfile()、os.path.isdir()路径检查
os.getcwd()获取当前路径
os.chdir()修改工作目录
os.environ.get()获取环境变量
os.system()执行系统命令
2.3.1 文件与目录操作
  1. 创建目录
  • 方法os.mkdir() / os.makedirs()
  • 示例
import os
os.mkdir("1") # 创建单级目录 | 文件已存在会报错
os.makedirs("test/1", exist_ok=True) # 创建多级目录,exist_ok=True,当文件已存在时不报错
  1. 文件操作
  • 方法os.rename() / os.remove()
  • 示例
import os
os.rename("old.txt","new.txt") # 重命名
os.remove("test/1.txt") # 删除文件
  1. 目录遍历
  • 方法os.scandir()
  • 示例
import os
for entry in os.scandir("."): # . 遍历当前目录下的所有 文件 和 子目录 if entry.is_file():print("文件:",entry)
# 输出:
# 文件: <DirEntry '1.py'>
2.3.2 路径处理
  1. 路径分解
  • 方法os.path.dirname() | os.path.basename() | os.path.splitext()
  • 示例
import ospath = "/home/user/documents/report.txt"# 获取路径组成部分
dir_path = os.path.dirname(path)  # 目录路径: "/home/user/documents"
file_name = os.path.basename(path)  # 完整文件名: "report.txt"
file_root, file_ext = os.path.splitext(file_name)  # 分离主名和扩展名: ("report", ".txt")# 完整路径拆分
head, tail = os.path.split(path)  # ("/home/user/documents", "report.txt")
  1. 路径拼接
  • 方法os.path.join()
  • 示例
full_path = os.path.join("dir","subdir","file.txt")
  1. 路径检查
  • 方法os.path.exists() | os.path.isfile() | os.path.isdir()
  • 示例
print(os.path.exists("1.txt"))  # 是否存在
print(os.path.isfile("1.txt"))  # 是否是文件
print(os.path.isdir("1.txt"))  # 是否是目录# 输出答案(根据个人本地要查询的文件为主)
# True
# True
# False
2.3.3 系统信息与环境
  1. os.getcwd()
  • 功能:获取当前工作目录
  • 示例
 cwd = os.getcwd()
  1. os.chdir()
  • 功能:修改工作目录
  • 示例
 cwd = os.chdir("/new/path")
  1. os.environ.get()
  • 功能:获取环境变量
  • 示例
home_dir = os.enciron.get("HOME","default") # 查找 HOME 值,没有则返回默认值 default
print(home_dir)
  1. os.system()
  • 功能:执行系统命令
  • 示例
os.system("ls -l")

2.4 sys

系统相关功能

概览
方法功能备注
sys.argv获取命令行参数
sys.stdout重定向输出
sys.stdin.readline().strip()读取标准输入
sys.version获取Python版本信息
sys.path获取模块搜索路径
sys.exit(1)退出程序并返回状态码非0状态码表示异常退出
sys.stdout.flush()刷新输出缓冲区确保立即显示
2.4.1 命令行参数处理
  1. sys.argv
  • 功能:获取命令行参数
  • 示例
# 假设执行:python scripts.py arg1 arg2 --option=value
print(sys.argv) # ['script.py', 'arg1', 'arg2', '--option=value']
# 实际应用:处理命令行选项
if len()sys.argv) > 1:action = sys.argv[1] # arg1if action == "start":print("")elif action == "stop":print("")
2.4.2 标准输入/输出控制
  1. sys.stdout
  • 功能:重定向输出
  • 示例
with open('1.txt','w',encoding="utf-8-sig") as f:sys.stdout = f # 重定向标准输出到文件print("这条信息将写入文件")sys.stdout = sys._stdout__ # 恢复标准输出
# 会将print中的内容写进 1.txt文件内
  1. sys.stdin.readline().strip()
  • 功能:读取标准输入
  • 示例
print("请输入内容:")
user_input = sys.stdin.readline().strip()
print(f"您输入了:{user_input}")# 输出:
"""
请输入内容:
1 2 3 
您输入了:1 2 3
"""
2.4.3 系统信息与配置
  1. sys.version
  • 功能:获取Python版本信息
  • 示例
print(sys.version)
# 输出
"""
3.11.9 (tags/v3.11.9:de54cf5, Apr  2 2024, 10:12:12) [MSC v.1938 64 bit (AMD64)]
"""
  1. sys.path
  • 功能:获取模块搜索路径
  • 示例
print(sys.path) # 输出列表形式,包含Python查找模块的路径
  1. sys.platform
  • 功能:获取操作系统平台
  • 示例
print(sys.platform) # 'win32', 'linux', 'darwin' (macOS)
# 输出 
"""
win32
"""
2.4.4 程序流程控制
  1. sys.exit(n)
  • 功能:退出程序并返回状态码(n=0时,正常退出;n=1《或是其它数字》时表示异常退出)
  • 场景:通常用于脚本或程序中发生错误时提前退出,表示异常终止
  • 示例
if error_occurred:sys.exit(1) # 非0状态码表示异常退出
  1. sys.stdout.flush()
print("处理中...", end="")
sys.stdout.flush()
# 执行耗时操作...
print("完成!")

2.5 json

JSON 数据处理

概览
方法功能
json.dumps()Python -> JSON字符串
json.loads()JSON字符串 -> Python
json.dump写入JSON文件
json.load()读取JSON文件
2.5.1 基本序列化与反序列化
  1. Python -> JSON字符串
  • 方法json.dumps()
  • 示例
import json
data = {"name": "Alice","age": 30,"hobbies": ["reading"],"is_student": False,
}
json_str = json.dumps(data, indent=2)
print(json_str)# 输出:
"""
{"name": "Alice","age": 30,"hobbies": ["reading","hiking"],"is_student": false
}
"""
  1. JSON字符串 -> Python
  • 方法json.loads()
  • 示例
restored_data = json.loads(json_str)
print(restored_data["name"]) # "Alice"
2.5.2 文件读写操作
  1. json.dump()
  • 功能:写入JSON文件
  • 示例
with open("data.json", "w") as f:json.dump(data, f, indent=4) # 控制为 4 缩进空格
  1. json.load()
  • 功能:读取JSON文件
  • 示例
with open("data.json") as f:loaded_data = json.load(f)
2.5.3 高级序列化控制

# 处理自定义对象
class User:def __init__(self, name, age):self.name = nameself.age = age# 自定义序列化方法
def user_encoder(obj):if isinstance(obj, User): # 判断 obj 是否是 User 的实例return {"name": obj.name, "age": obj.age}raise TypeError(f"Object of type {obj.__class__.__name__} is not JSON serializable")user = User("Bob", 40)
user_json = json.dumps(user, default=user_encoder)  # {"name": "Bob", "age": 40}# 自定义反序列化方法
def user_decoder(dct):if "name" in dct and "age" in dct:return User(dct["name"], dct["age"])return dctrestored_user = json.loads(user_json, object_hook=user_decoder)
print(restored_user.name)  # "Bob"
```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/89961.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/89961.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/89961.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

洛谷 P3478 [POI 2008] STA-Station

【题目链接】 洛谷 P3478 [POI 2008] STA-Station 【题目考点】 1. 树形动规&#xff1a;换根动规 换根动规&#xff0c;又名二次扫描法&#xff0c;一般是给一颗不定根树&#xff0c;通过两次扫描来求解。 我们可以先任选一个根结点root&#xff0c;通过树形动规的思想计算…

【爬虫】03 - 爬虫的基本数据存储

爬虫03 - 爬虫的数据存储 文章目录爬虫03 - 爬虫的数据存储一&#xff1a;CSV数据存储1&#xff1a;基本介绍2&#xff1a;基本使用3&#xff1a;高级使用4&#xff1a;使用示例二&#xff1a;JSON数据存储1&#xff1a;基础json读写2&#xff1a;字符串和对象的转换3&#xff…

深入分析计算机网络数据链路层和网络层面试题

计算机网络体系结构1. 请简述 OSI 七层模型和 TCP/IP 四层模型&#xff0c;并比较它们的异同。OSI 七层模型&#xff1a;应用层&#xff1a;直接为用户的应用进程提供服务&#xff0c;如 HTTP&#xff08;超文本传输协议&#xff0c;用于 Web 浏览器与服务器通信&#xff09;、…

云服务器新装的mysql8,无法通过远程连接,然后本地pymysql也连不上

阿里云服务器&#xff0c;用apt-get新装的mysql-server&#xff0c;竟然无法通过远程连接到&#xff0c;竟然是这个原因。不是防火墙&#xff0c;iptables早就关了。也不是安全组&#xff0c;不是人为限制访问的话&#xff0c;根本没必要弄安全组 排查过程 netstat -antop|grep…

质量即服务:从测试策略到平台运营的全链路作战手册

&#xff08;零&#xff09;为什么需要“质量即服务” 当业务方说“今晚一定要上线”&#xff0c; 当开发说“我只改了两行代码”&#xff0c; 当运维说“回滚窗口只有 5 分钟”&#xff0c; 质量必须像水电一样随取随用&#xff0c;而不是上线前的大坝泄洪。 这篇手册提供一张…

Java -- 自定义异常--Wrapper类--String类

自定义异常&#xff1a;概念&#xff1a;当程序中出现了某些错误&#xff0c;但该错误信息并没有在Throwable子类中描述处理&#xff0c;这个时候可以自己设计异常&#xff0c;用于描述该错误信息。步骤&#xff1a;1. 定义类&#xff1a;自定义异常类名&#xff08;程序员自己…

一文速通《线性方程组》

目录 一、解题必记知识点 二、解题必备技巧 三、非齐次线性方程组求解 四、齐次线性方程组求解 ★五、解析题目信息&#xff0c;获取暗含条件 一、解题必记知识点 (1) (2)基础解系线性无关&#xff0c;基础解系 解空间的一个基&#xff0c;基 一组线性无关的、能够生…

【Django】DRF API版本和解析器

讲解 Python3 下 Django REST Framework (DRF) API 版本控制解析器&#xff08;Parser&#xff09;一、DRF API 版本控制详解 API 版本控制是构建健壮、可维护的 RESTful API 的关键&#xff0c;尤其在项目演进中需要兼容不同版本的客户端请求。 1.1 API 版本控制的核心原理 AP…

Windows系统暂停更新工具

功能说明 暂停更新至2999年恢复系统更新彻底禁用更新&#xff08;不可逆&#xff09; 使用方法 下载解压后双击运行 .bat 文件 输入数字选择功能&#xff1a; 输入 1&#xff1a;暂停更新至2999年&#xff08;推荐&#xff09;输入 2&#xff1a;恢复系统更新输入 3&#xf…

git push新版问题解决

git 好像不能通过username:password的方式来git push了。但我的电脑依然弹出username和password的弹窗。转战ssh来git push。由于之前是用git clone克隆的&#xff0c;需要再转换成ssh的url来git push。

PyCharm + AI 辅助编程

PyCharm AI&#xff1a;初学者友好的 2 个实用场景&#xff08;附操作步骤&#xff09; PyCharm 专业版&#xff08;或通过插件集成&#xff09;支持 AI 辅助编程&#xff08;如 JetBrains AI 或 GitHub Copilot&#xff09;&#xff0c;能根据代码上下文自动生成代码、解释逻…

疯狂星期四文案网第15天运营日记

网站运营第15天&#xff0c;点击观站&#xff1a; 疯狂星期四 crazy-thursday.com 全网最全的疯狂星期四文案网站 运营报告 昨日访问量 昨天只有20来ip, 太惨了&#xff0c;感觉和最近没有发新段子有关&#xff0c;也没有发新的外链&#xff0c;不知道这周四会怎么样 昨日搜…

如何解决pip安装报错ModuleNotFoundError: No module named ‘Cython’问题

【Python系列Bug修复PyCharm控制台pip install报错】如何解决pip安装报错ModuleNotFoundError: No module named ‘Cython’问题 摘要 在使用 PyCharm 控制台或命令行执行 pip install Cython 时&#xff0c;常会遇到 ModuleNotFoundError: No module named Cython 的报错。本…

freertos任务调度关键函数理解 vTaskSwitchContext

void vTaskSwitchContext(void) {//my_printf( "uxSchedulerSuspended %d\n", uxSchedulerSuspended );/* 调度器处于挂起状态 */if (uxSchedulerSuspended ! (UBaseType_t)pdFALSE) {/*** The scheduler is currently suspended - do not allow a context* switch.…

CPU 密集型 和 I/O 密集型 任务

文章目录**CPU 密集型任务&#xff08;CPU-bound&#xff09;**定义&#xff1a;特点&#xff1a;常见场景&#xff1a;如何优化 CPU 密集型任务&#xff1a;**I/O 密集型任务&#xff08;I/O-bound&#xff09;**定义&#xff1a;特点&#xff1a;常见场景&#xff1a;如何优化…

[2025CVPR-小目标检测方向]基于特征信息驱动位置高斯分布估计微小目标检测模型

核心问题 ​小目标检测性能差&#xff1a;​​ 尽管通用目标检测器&#xff08;如 Faster R-CNN, YOLO, SSD&#xff09;在常规目标上表现出色&#xff0c;但在检测微小目标&#xff08;如 AI-TOD 基准定义的&#xff1a;非常小目标 2-8 像素&#xff0c;小目标 8-16 像素&…

三大工厂设计模式

1.简单工厂模式1.1需求入手从需求进行入手&#xff0c;可以更深入的理解什么是设计模式。有一个制作披萨的需求&#xff1a;需要便于扩展披萨的种类&#xff0c;便于维护。1.披萨的种类有很多&#xff1a;GreekPizz&#xff0c;CheesePizz等2.披萨的制作流程&#xff1a;prepar…

SpringBoot--Mapper XML 和 Mapper 接口在不同包

&#x1f9e9; 背景说明在 Spring Boot 中&#xff0c;MyBatis 默认要求 Mapper 接口和 XML 文件位于相同包路径。 但在实际项目中&#xff0c;为了模块化或结构清晰&#xff0c;常将 XML 放在 resources/mybatis/... 下&#xff0c;这种做法就必须进行额外配置。&#x1f4c1;…

公交车客流人数统计管理解决方案:智能化技术与高效运营实践

1. 引言公交车作为城市公共交通的核心组成部分&#xff0c;其客流数据的精准统计与管理直接影响运营效率、调度优化和乘客体验。传统的人工统计方式效率低、误差大&#xff0c;难以满足现代智慧交通的需求。随着人工智能&#xff08;AI&#xff09;、物联网&#xff08;IoT&…

正则表达式完全指南:从入门到实战

目录 一、什么是正则表达式&#xff1f; 二、基础语法速查表 三、进阶特性 1.分组与捕获 2.非捕获分组 3.前瞻与后顾 4.贪婪与懒惰匹配 四、实战案例 案例1&#xff1a;验证手机号 案例2&#xff1a;提取网页中所有链接 案例3&#xff1a;密码强度验证 一、什么是正…