Python:正则表达式
正则表达式的基础和应用
一、正则表达式核心语法(四大基石)
1. 元字符(特殊符号)
- 定位符
^
:匹配字符串开始位置
$
:匹配字符串结束位置
\b
:匹配单词边界(如\bword\b
匹配独立单词) - 字符类
.
:任意单个字符(默认不包括换行符)
\d
:数字(等价[0-9]
)
\w
:字母、数字、下划线(等价[a-zA-Z0-9_]
)
\s
:空白符(空格、Tab、换行等) - 转义符
\
:将特殊字符转为普通字符(如\.
匹配真正的点号)
2. 量词(重复次数)
*
:0次或多次+
:1次或多次?
:0次或1次{n}
:精确n次{n,}
:至少n次{n,m}
:n到m次
3. 字符集合与逻辑
[abc]
:匹配a、b、c中的任意一个[a-z]
:匹配小写字母a到z[^abc]
:否定集合(匹配不在abc中的字符)|
:逻辑或(如cat|dog
匹配"cat"或"dog")
4. 分组与引用
( )
:捕获分组(可通过\1
或$1
反向引用)(?: )
:非捕获分组(仅用于逻辑分组)(?P<name>)
:命名分组(Python中可通过名称引用)
二、正则引擎工作原理(NFA vs DFA)
1. NFA引擎(主流实现)
- 特点:支持回溯、捕获组、零宽断言等高级功能,但存在性能风险
- 匹配流程:
- 从起始位置尝试匹配
- 记录所有可能的分支(回溯点)
- 失败时退回最近回溯点继续尝试
- 直到匹配成功或完全失败
2. DFA引擎
- 特点:无回溯,线性时间复杂度,但功能受限(不支持分组引用)
- 流程:一次性扫描文本,无状态回退
三、关键应用场景与解决方案
1. 数据验证(精准匹配)
-
邮箱验证
^[\w\.-]+@([\w-]+\.)+[\w-]{2,4}$
^
和$
确保整行匹配[\w\.-]+
允许用户名包含字母、数字、点、减号([\w-]+\.)+
匹配多级域名(如 "mail." 或 "google.com.")[\w-]{2,4}
匹配顶级域名(如 com、org)
-
强密码规则
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}$
(?=.*\d)
:正向预查确保包含数字(?=.*[a-z])
:必须有小写字母(?=.*[A-Z])
:必须有大写字母.{8,}
:总长度至少8位
2. 数据提取(捕获关键信息)
-
从URL提取域名和路径
^https?://([^/?#]+)([^?#]*)
- 分组1
([^/?#]+)
捕获域名(如www.example.com
) - 分组2
([^?#]*)
捕获路径(如/path/to/page
)
- 分组1
-
日志时间戳提取
\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}
- 精确匹配
YYYY-MM-DD HH:MM:SS
格式
- 精确匹配
3. 文本清洗与替换
-
删除HTML标签
<[^>]+>
- 匹配所有以
<
开头、>
结尾的内容 - 使用
re.sub(r'<[^>]+>', '', html)
替换为空
- 匹配所有以
-
格式化电话号码
输入:1234567890
→ 输出:(123) 456-7890
re.sub(r'(\d{3})(\d{3})(\d{4})', r'(\1) \2-\3', phone)
四、性能优化与避坑指南
1. 避免灾难性回溯
- 危险模式:
(a+)+
或.*.*
(嵌套量词导致指数级复杂度) - 优化方法:
- 用具体字符代替
.*
(如\d+
代替.*
) - 使用原子分组
(?>...)
(部分引擎支持) - 添加锚点限制范围(如
^...$
)
- 用具体字符代替
2. 贪婪与非贪婪选择
- 贪婪模式(默认):
.*
匹配尽可能多内容<div>.*</div> → 可能跨多个标签错误匹配
- 非贪婪模式:
.*?
匹配最短结果<div>.*?</div> → 精确匹配单个标签内容
3. 预编译与复用
# 预编译提升性能(适用于频繁调用场景)
pattern = re.compile(r'\d{3}-\d{4}')
pattern.findall('Tel: 123-4567')
五、进阶技巧
1. 零宽断言(Lookaround)
(?=...)
:正向先行断言(右侧必须满足条件)\d+(?=px) → 匹配 "100px" 中的 "100"
(?<=...)
:正向后行断言(左侧必须满足条件)(?<=\$)\d+ → 匹配 "$200" 中的 "200"
2. 条件匹配
(?(id)yes|no) → 根据分组是否存在选择分支
- 示例:匹配带区号的电话号码
($)? \d{3} (?(1)$|) → 匹配 "(123)" 或 "123"
六、好用的工具
- 调试工具
- RegExr:实时高亮匹配结果,显示分组与回溯
- Regex101:支持多语言引擎,提供错误解释
- 可视化工具
Regexper:图形化展示正则逻辑
七、总结
正则表达式的核心在于 模式定义 与 引擎匹配机制 的结合。掌握以下要点即可应对90%的场景:
- 精准定位:用
^
、$
、\b
约束边界 - 明确范围:用字符集合
[...]
和量词{n,m}
减少模糊匹配 - 合理分组:通过
( )
提取关键数据 - 性能优先:避免嵌套量词,优先使用具体字符
以下是Python中正则表达式的用法
一、环境准备
1. 导入re模块
import re # Python内置正则库
2. 原始字符串(Raw String)
正则表达式推荐使用原始字符串(前缀
r
),避免Python字符串转义冲突:pattern = r'\d+' # 正确:匹配数字 pattern = '\\d+' # 错误:需双重转义,可读性差
二、四大核心方法
1. re.match() - 从开头匹配
只匹配字符串开头,成功返回
Match对象
,否则返回None
text = "123abc" result = re.match(r'\d+', text) if result:print("匹配成功:", result.group()) # 输出: 123
2. re.search() - 全局搜索
扫描整个字符串,找到第一个匹配项
text = "abc456def" result = re.search(r'\d+', text) print(result.group()) # 输出: 456
3. re.findall() - 查找所有匹配
返回所有匹配结果的列表(无分组时返回字符串列表)
text = "1a2b3c" numbers = re.findall(r'\d', text) print(numbers) # 输出: ['1', '2', '3']
4. re.sub() - 替换匹配内容
将匹配内容替换为指定字符串
text = "2023-01-01" new_text = re.sub(r'-', '/', text) print(new_text) # 输出: 2023/01/01
三、分组与捕获
1. 基本分组
( )
用括号分组,通过
group(index)
提取text = "John:30" pattern = r'(\w+):(\d+)' match = re.search(pattern, text) print(match.group(1)) # John print(match.group(2)) # 30
2. 非捕获分组
(?: )
分组但不捕获,节省内存
text = "apple orange" pattern = r'(?:a|an|the) (\w+)' # 匹配冠词后的单词但不捕获冠词 match = re.search(pattern, text) print(match.group(1)) # apple
3. 命名分组
(?P<name>)
为分组命名,提升可读性
text = "Date: 2023-08-15" pattern = r'Date: (?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})' match = re.search(pattern, text) print(match.group('year')) # 2023 print(match.groupdict()) # {'year': '2023', 'month': '08', 'day': '15'}
四、高级功能
1. 正则标志(Flags)
控制匹配模式的全局行为
text = "Hello\nWorld" # 多行模式(^和$匹配每行开头结尾) re.findall(r'^\w+', text, flags=re.MULTILINE) # 输出: ['Hello', 'World'] # 忽略大小写 re.findall(r'hello', text, flags=re.IGNORECASE) # 输出: ['Hello']
2. 预编译正则表达式
提升重复使用时的性能
pattern = re.compile(r'\d{3}-\d{4}') # 编译为RegexObject result = pattern.findall("Tel: 123-4567") # ['123-4567']
3. 替换时使用函数
动态生成替换内容
def to_upper(match):return match.group().upper()text = "hello world" new_text = re.sub(r'\b\w', to_upper, text) print(new_text) # 输出: Hello World
五、经典实战案例
1. 验证邮箱格式
def validate_email(email):pattern = r'^[\w\.-]+@[\w\.-]+\.\w+$'return re.match(pattern, email) is not Noneprint(validate_email("user@example.com")) # True print(validate_email("invalid.email@")) # False
2. 提取HTML链接
html = '<a href="https://example.com">Link</a>' pattern = r'href="(https?://[^"]+)"' match = re.search(pattern, html) print(match.group(1)) # https://example.com
3. 转换日期格式
date = "2023-08-15" new_date = re.sub(r'(\d{4})-(\d{2})-(\d{2})', r'\2/\3/\1', date) print(new_date) # 08/15/2023
六、避坑指南
贪婪匹配陷阱
使用.*?
非贪婪模式避免过度匹配:text = "<div>Hello</div><div>World</div>" re.findall(r'<div>(.*?)</div>', text) # ['Hello', 'World']
特殊字符转义
匹配.
、*
等符号需转义:re.findall(r'3\.14', "pi=3.14") # ['3.14']
性能优化
避免在循环中重复编译正则,优先使用预编译。
七、调试工具
在线测试
RegExr:实时高亮匹配结果,显示分组信息- 代码调试
使用re.DEBUG
标志查看正则解析过程:re.compile(r'\d+', re.DEBUG)
相关文章:
Python:正则表达式
正则表达式的基础和应用 一、正则表达式核心语法(四大基石) 1. 元字符(特殊符号) 定位符 ^:匹配字符串开始位置 $:匹配字符串结束位置 \b:匹配单词边界(如 \bword\b 匹配…...
ChatGPT4.5详细介绍和API调用详细教程
OpenAI在2月27日发布GPT-4.5的研究预览版——这是迄今为止OpenAI最强大、最出色的聊天模型。GPT-4.5在扩大预训练和微调规模方面迈出了重要的一步。通过扩大无监督学习的规模,GPT-4.5提升了识别内容中的模式、建立内容关联和生成对于内容的见解的能力,但…...
linux makefile tutorial
一个makefile的教程,几个小时就能看完,对makefile有个总体加细节的系统了解,非常不错: Learn Makefiles With the tastiest examples 中文翻译版: 起步 - Makefile 教程 (gavinliu6.github.io) gcc官网手册&#x…...
学习C2CRS Ⅲ (Response Generation Module)
代码地址:https://github.com/RUCAIBox/WSDM2022-C2CRS 论文地址:https://arxiv.org/abs/2201.02732 CFSelectionConvModel模型结构与功能 CFSelectionConvModel 是一个用于对话推荐系统的端到端模型,结合了知识图谱(KG)、评论信息和对话上下文来生成对话响应。它通过以…...
SpringBoot全栈开发:从数据库到Markdown文件导出的终极实践指南
一、SpringBoot后端核心实现 1.1 数据库数据转MD文件 通过SpringBoot实现数据库内容导出为Markdown文件,是文档自动化生成的关键技术: GetMapping("/download") public void exportMd(HttpServletResponse response, Integer id) {Content …...
go函数详解
1.简介 函数是组织好的、可重复使用的,用于执行指定任务的代码块,为了完成某一个功能的程序指令的集合,称为函数。go语言中支持:函数、匿名函数和闭包。 2.函数的定义 func 函数名 (形参列表) (返回值列表){ 函数体 return …...
MVCC实现原理
一、引言 在现代数据库管理系统中,数据的一致性和并发性是两个至关重要的特性。传统的锁机制虽然有效,但也存在着性能瓶颈,特别是在高并发环境下,锁的争用会导致系统响应时间变慢,甚至引发死锁等问题。为了克服这些挑…...
通过Golang的container/list实现LRU缓存算法
文章目录 力扣:146. LRU 缓存主要结构 List 和 Element常用方法1. 初始化链表2. 插入元素3. 删除元素4. 遍历链表5. 获取链表长度使用场景注意事项 源代码阅读 在 Go 语言中,container/list 包提供了一个双向链表的实现。链表是一种常见的数据结构&#…...
网络编程7天学java
* 网络编程:两台或两台以上的主机构成一个网络 * IP地址:标志网络中的一个通信实体的地址 * 端口号:区分不同应用程序 * 网络通信协议:ISO参考模型(7层),TCP/IP协议(4层)…...
在 IntelliJ IDEA 中配置 Git
1. 确保已安装 Git 在配置之前,确保你的系统已经安装了 Git。 检查是否已安装 Git: bash 复制 git --version 如果未安装,请前往 Git 官网 下载并安装。 2. 在 IntelliJ IDEA 中配置 Git 打开 IntelliJ IDEA。 进入设置: Windo…...
【Godot4.4】Rect2总结
概述 Rect2是2D场景中比较重要的一种数据类型。 Rect2的本质含义是2D场景的轴对齐包围盒,而不是可以自由变换的矩形。 Rect2提供了一些方法,可以方便的判断Rect2之间是否重叠、包含等,并可以获得重叠的区域。也可以获得两个Rect2的包围盒。…...
git使用命令总结
文章目录 Git 复制创建提交步骤Git 全局设置:创建 git 仓库:已有仓库? 遇到问题解决办法:问题一先git pull一下,具体流程为以下几步: 详细步骤 Git 复制 git clone -b RobotModelSetting/develop https://gitlab.123/PROJECT/123.git创建提…...
Unity DOTS从入门到精通之 C# Job System
文章目录 前言安装 DOTS 包C# 任务系统Mono 环境DOTS 环境运行作业NativeContainer 前言 作为 DOTS 教程,我们将创建一个旋转立方体的简单程序,并将传统的 Unity 设计转换为 DOTS 设计。 Unity 2022.3.52f1Entities 1.3.10 安装 DOTS 包 要安装 DOTS…...
linux下的网络抓包(tcpdump)介绍
linux下的网络抓包[tcpdump]介绍 前言tcpdump1. 安装 tcpdump2. 基本抓包命令3. 过滤器使用4. 保存捕获的数据包 异常指标1. 连接建立与断开相关指标异常 SYN 包异常 FIN 或 RST 包 2. 流量相关指标异常流量峰值异常源或目的 IP 流量 3. 端口相关指标异常端口使用端口扫描 4. 数…...
深入理解 Linux 中的 -h 选项:让命令输出更“人性化”
在 Linux 系统中,命令行工具是系统管理员和普通用户最常用的交互方式之一。然而,命令行输出往往充满了技术性术语和数字,对于初学者或非技术用户来说可能显得晦涩难懂。幸运的是,许多 Linux 命令都提供了一个非常实用的选项&#…...
selenium的鼠标操作
1、鼠标操作 鼠标时间对应的方法在那个类中? ActionChains类,实例化 鼠标对象 1、context_click(element) # 右击 2、double_click(element) #双击 3、double_and_drop(source, target) # 拖拽 4、move_to_element(element) # 悬停 【重点】 5、perform() …...
STM32——GPIO介绍
GPIO(General-Purpose IO ports,通用输入/输出接口)模块是STM32的外设接口的核心部分,用于感知外界信号(输入模式)和控制外部设备(输出模式),支持多种工作模式和配置选项。 1、GPIO 基本结构 STM32F407 的每个 GPIO 引脚均可独立配置,主要特性包括: 9 组 GPIO 端口…...
Word 小黑第15套
对应大猫16 修改样式集 导航 -查找 第一章标题不显示 再选中文字 点击标题一 修改标题格式 格式 -段落 -换行和分页 勾选与下段同页 添加脚注 (脚注默认位于底部 )在脚注插入文档属性: -插入 -文档部件 -域 类别选择文档信息,域…...
linux自启动服务
在Linux环境中,systemd是一个系统和服务管理器,它为每个服务使用.service文件进行配置。systemctl是用于控制系统服务的主要工具。本文将详细介绍如何使用systemctl来管理vsftpd服务,以及如何设置服务自启动。 使用Systemd设置自启动服务 创…...
react使用拖拽,缩放组件,采用react-rnd解决 -完整版
屏幕录制2025-03-10 10.16.06 以下代码仅提供左侧可视化区域 右侧数据根据你们的存储数据来 大家直接看Rnd标签设置的属性即可!!!!! /*** 用户拖拽水印的最终位置信息*/ export interface ProductWatermarkValue {wat…...
通过 ElasticSearch的Python API和`curl` 命令获取Elasticsearch 所有索引名称
导言 在大数据管理和实时搜索场景中,Elasticsearch 是一款不可或缺的工具。无论是开发调试、数据维护,还是系统监控,快速列出所有索引名称都是一个高频需求。本文将手把手教你如何通过 Python 客户端连接 Elasticsearch,并用两种方…...
Flutter:StatelessWidget vs StatefulWidget 深度解析
目录 1. 引言 2. StatelessWidget(无状态组件) 2.1 定义与特点 2.2 代码示例 3. StatefulWidget(有状态组件) 3.1 定义与特点 3.2 代码示例 4. StatelessWidget vs StatefulWidget 对比 5. StatefulWidget 生命周期 5.1…...
[密码学实战]Java实现国密TLSv1.3单向认证
一、代码运行结果 1.1 运行环境 1.2 运行结果 1.3 项目架构 二、TLS 协议基础与国密背景 2.1 TLS 协议的核心作用 TLS(Transport Layer Security) 是保障网络通信安全的加密协议,位于 TCP/IP 协议栈的应用层和传输层之间,提供: • 数据机密性:通过对称加密算法(如 AE…...
蓝桥杯省赛真题C++B组2024-握手问题
一、题目 【问题描述】 小蓝组织了一场算法交流会议,总共有 50 人参加了本次会议。在会议上,大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手(且仅有一次)。但有 7 个人,这 7 人彼此之间没有进行握手(但这…...
项目实操分享:一个基于 Flask 的音乐生成系统,能够根据用户指定的参数自动生成 MIDI 音乐并转换为音频文件
在线体验音乐创作:AI Music Creator - AI Music Creator 体验者账号密码admin/admin123 系统架构 1.1 核心组件 MusicGenerator 类 负责音乐生成的核心逻辑 包含 MIDI 生成和音频转换功能 管理音乐参数和音轨生成 FluidSynth 集成 用于 MIDI 到音频的转换 …...
Java开发者如何接入并使用DeepSeek
目录 一、准备工作 二、添加DeepSeek SDK依赖 三、初始化DeepSeek客户端 四、数据上传与查询 五、数据处理与分析 六、实际应用案例 七、总结 【博主推荐】:最近发现了一个超棒的人工智能学习网站,内容通俗易懂,风格风趣幽默ÿ…...
多方安全计算(MPC)电子拍卖系统
目录 一、前言二、多方安全计算(MPC)与电子拍卖系统概述2.1 多方安全计算(MPC)的基本概念2.2 电子拍卖系统背景与需求三、MPC电子拍卖系统设计原理3.1 系统总体架构3.2 电子拍卖中的安全协议3.3 数学与算法证明四、数据加解密模块设计五、GPU加速与系统性能优化六、GUI设计与系…...
【数据库系统概论】第十一章 并发控制
第十一章 并发控制 11.1 并发控制概述(1)丢失修改(2)不可重复读(3)读“脏”数据 11.2 封锁11.2.1 封锁的概念11.2.2 基本封锁类型(1)排它锁/X锁/写锁(2)共享锁…...
C语言_数据结构总结4:不带头结点的单链表
纯C语言代码,不涉及C 0. 结点结构 typedef int ElemType; typedef struct LNode { ElemType data; //数据域 struct LNode* next; //指针域 }LNode, * LinkList; 1. 初始化 不带头结点的初始化,即只需将头指针初始化为NULL即可 void Init…...
用CSS画一条0.5px的线
上次面试前端被问到了这个问题,感觉有点懵懵的,我就回答了一个scaleY(0.5),这个是真的没想到,希望有需要的朋友可以去看看。随便记住一种就行。 1.第一种方式:通过缩放1px的线条实现视觉上的0.5px效果,兼容性较好。 …...
知识库全链路交互逻辑
阶段顺序 URL输入 → 网络连接 → 前端请求 → 后端处理 → 数据库交互 → 数据返回 → 前端渲染 → 连接关闭 阶段1:用户输入URL 用户行为:在浏览器地址栏输入 https://knowledge.com/search?keyword金融趋势 浏览器动作: “浏览器解析U…...
BambuStudio学习笔记:Model
# Model.hpp 核心模型结构说明## 文件概述 该头文件定义了3D打印数据处理的核心数据结构,包含模型对象、体积、实例、材料等关键类。主要功能包括: - 三维模型数据存储与管理 - 模型变换操作(平移/旋转/缩放) - 打印参数配置 - 多…...
Spring (八)AOP-切面编程的使用
目录 实现步骤: 1 导入AOP依赖 2 编写切面Aspect 3 编写通知方法 4 指定切入点表达式 5 测试AOP动态织入 图示: 一 实现步骤: 1 导入AOP依赖 <!-- Spring Boot AOP依赖 --><dependency><groupId>org.springframewor…...
【Go每日一练】构建一个简单的用户信息管理系统
👻创作者:丶重明 👻创作时间:2025年3月7日 👻擅长领域:运维 目录 1.😶🌫️题目:简单的用户信息管理系统2.😶🌫️代码开发3.😶&a…...
PathRAG:通过图剪枝的方法优化Graph-based RAG的性能方法浅析
PathRAG 也是一种新型 Graph-based RAG 方法,通过检索索引图中的关键关系路径,减少噪声并优化 LLM 提示。其核心创新在于基于流的剪枝算法和路径为基础的提示策略,特别适用于捕捉复杂数据集中的关系。(其实可以看做相比GraphRAG假…...
ElementUI 级联选择器el-cascader启用选择任意一级选项,选中后关闭下拉框
1、启用选择任意一级选项 在 el-cascader 标签上加上配置项: :props"{ checkStrictly: true }"例如: <el-cascaderref"selectedArrRef"v-model"selectedArr":options"optionsList":props"{ checkStri…...
【软件逆向】QQ 连连看小游戏去广告与一键消除实现
目录 一、背景介绍 二、去广告实现 2.1 分析广告加载流程 2.2 逆向分析广告加载逻辑 2.3 去广告方案 三、一键消除外挂实现 3.1 分析游戏逻辑 3.2 编写外挂插件 3.3 注入外挂: 四、一键消除效果展示 五、额外扩展 一、背景介绍 QQ 连连看是一款经典的休闲…...
vue el-select 省市区三级联动 vue + element-ui使用第三方插件实现省市区三级联动
vue el-select 省市区三级联动 vue使用第三方插件实现省市区三级联动 网上找了好多教程,都是使用el-cascader级联选择器的省市区选择器,但是几乎没有三个单独的el-select的进行关联的三级省市联动组件效果 第一步:先安装省市区element-ui的插件 npm install element-china-a…...
【GPT入门】第8课 大语言模型的自洽性
【GPT入门】第8课 大语言模型的自洽性 1.自洽性概念2.代码(观察执行结果)3.自洽性核心思想 1.自洽性概念 大模型的自洽性(self - consistency)是指在推理阶段,大模型通过生成多个答案并选择出现频率最高的那个&#x…...
工程化与框架系列(28)--前端国际化实现
前端国际化实现 🌍 引言 前端国际化(i18n)是现代Web应用中的重要组成部分,它能够让应用支持多语言和多地区的用户使用。本文将深入探讨前端国际化的实现方案和最佳实践,包括文本翻译、日期时间格式化、货币处理等方面…...
【阿里云】操作系统控制台操作体验与性能评测全解析
引言 在现代的云计算环境中,操作系统控制台是进行系统管理和运维的重要工具。它不仅帮助用户高效地管理云端资源,还提供了智能助手、系统诊断、性能观测等功能,能够提升操作系统的使用效率,增强用户的操作体验。本文简要介绍了操…...
面试之《IntersectionObserver的使用》
IntersectionObserver 是一个 Web API,用于异步观察目标元素与其祖先元素或顶级文档视口(viewport)交叉状态的变化。这在很多场景下非常有用,比如懒加载图片、实现无限滚动加载更多内容等。下面详细介绍它的使用方法。 基本原理 …...
在 Spring Boot 2.7.x 中引入 Kafka-0.9 的实践
文章目录 在 Spring Boot 2.7.x 中引入 Kafka-0.9 的实践一、下载 Kafka-0.9二、启动 Zookeeper 和 Kafka三、创建 Spring Boot 项目四、引入 kafka 依赖五、移除 Kafka 自动配置六、编写 Kafka 生产者6.1 Kafka配置类6.2 生产者监听类 七、编写Controller发送Kafka八、验证消费…...
【MACOS】用户数据过多
进入下面的路径下找到.Spotlight-V100文件夹 /System/Volumes/Data修改选线 通过终端权限不够 在finder中进行查看然后解锁 然后添加权限 使用代码查看存储数据。 diskutil apfs list...
鸿蒙系统中的持续部署
鸿蒙操作系统,作为一款面向未来的分布式操作系统,旨在为不同的设备提供统一的操作系统平台。它支持多种终端设备,包括但不限于智能手机、平板电脑、智能穿戴设备和物联网(IoT)设备等,并且能够实现跨平台的无…...
centos linux安装mysql8 重置密码 远程连接
1. 下载并安装 MySQL Yum 仓库 从 MySQL 官方网站下载并安装 Yum 仓库配置文件。 # 下载MySQL 8.0的Yum仓库包 wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm # 安装Yum仓库包 sudo rpm -ivh mysql80-community-release-el7-5.noarch.rpm2. 启…...
几种常见的虚拟环境工具(Virtualenv、Conda、System Interpreter、Pipenv、Poetry)的区别和特点总结
在 PyCharm 中创建虚拟环境是一个非常直接的过程,可以帮助你管理项目依赖,确保不同项目之间的依赖不会冲突。 通过 PyCharm 创建虚拟环境 打开 PyCharm 并选择或创建一个项目。 打开项目设置: 在 Windows/Linux 上,可以通过点击…...
VScode:运行程序停止后,频繁出现终端进程被终止
VScode里面powershell被迫关闭 bug场景排查原因解决办法 bug场景 系统:Windows IDE:Visual Studio Code 停止运行程序后,按向上箭头想要执行上一步命令,忽然终端页面强行关闭,并报错如下: 终端进程 &quo…...
PHP框架加载不上.env文件中的变量
以lumen5.5框架为例,根目录中bootstrap文件夹下的app.php文件中 (new Dotenv\Dotenv(__DIR__./../))->load(); 是读取所有.env中的文件的,这个是正常的,但是在代码中的任何位置或者在config目录下的databases.php里,代码如…...
Linux:基本指令与内涵理解
1.文件操作指令 1.1 ls ls指令用于查看指定层级文件夹下的文件或文件夹 基本格式:ls (选项) (查看层级) 其中选项处不写就默认是显示文件名,查看层级默认是当前层级 选项1: -l 作用:将查找文件的详细信息显示出来 我们…...