当前位置: 首页 > news >正文

Python--正则表达式

1. 日志打印与终端颜色控制

1.1 使用 loguru​ 打印日志

from loguru import loggerlogger.debug("调试信息")
logger.info("普通信息")
logger.warning("警告信息")
logger.error("错误信息")
logger.success("成功信息")

1.2 终端颜色控制(Colorama)

Colorama 库用于控制终端输出的颜色和样式。

  • 字体颜色:Fore.RED​, Fore.GREEN​
  • 背景颜色:Back.BLACK​, Back.CYAN​
  • 样式:Style.BRIGHT​, Style.DIM​

示例:

from colorama import Fore, Back, Styleprint(Fore.RED + "红色字体" + Style.RESET_ALL)
print(Back.GREEN + "绿色背景" + Style.RESET_ALL)
print(Style.BRIGHT + "高亮文本" + Style.RESET_ALL)

2. 正则表达式

2.1 基础语法与元字符

元字符描述示例
​.​匹配除换行符外的任意字符​a.c​ → "abc", "a1c"
​|​逻辑或​a|b​ → "a" 或 "b"
​[]​字符集匹配​[aeiou]​ → 匹配任意元音字母
​[^]​字符集取反​[^0-9]​ → 匹配非数字字符
​()​分组匹配​(ab)+​ → "ab", "abab"
​\​转义字符​\.​ → 匹配小数点 .​

2.2 预定义字符集

表达式匹配内容等价形式
​\d​数字​[0-9]​
​\w​字母/数字/下划线​[A-Za-z0-9_]​
​\s​空白字符​[ \t\n\r\f\v]​
​\D​非数字​[^\d]​
​\W​非单词字符​[^\w]​
​\S​非空白字符​[^\s]​

2.3 重复匹配

表达式描述示例
​{n}​重复n次​a{3}​ → "aaa"
​{m,n}​重复m到n次​a{2,4}​ → "aa", "aaa", "aaaa"
​?​0或1次​a?​ → "" 或 "a"
​+​至少1次​a+​ → "a", "aaa"
​*​0到多次​a*​ → "", "a", "aaaa"

2.4 贪婪与非贪婪模式

  • 贪婪模式:默认匹配尽可能长的字符串。

    • 示例:a.*b​ 匹配 "aabcb" 中的整个字符串。
  • 非贪婪模式:使用 ?​ 匹配尽可能短的字符串。

    • 示例:a.*?b​ 匹配 "aabcb" 中的 "aab" 和 "ab"。

2.5 常用正则表达式案例

  • 邮箱匹配:^[\w\.-]+@[\w\.-]+\.\w+$​
  • IP地址匹配:^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$​
  • 日期格式(YYYY-MM-DD):^\d{4}-\d{2}-\d{2}$​

2.6 高级功能

分组与后向引用
  • 分组捕获:使用 ()​ 分组并提取匹配内容。

    import re
    pattern = r"(\d{4})-(\d{2})-(\d{2})"
    match = re.match(pattern, "2023-10-05")
    if match:year, month, day = match.groups()print(f"Year: {year}, Month: {month}, Day: {day}")  # Year: 2023, Month: 10, Day: 05
    
  • 后向引用:通过 \1​, \2​ 引用分组内容。

    # 匹配重复单词,如 "hello hello"
    pattern = r"(\b\w+\b)\s+\1"
    print(re.findall(pattern, "hello hello world"))  # ['hello']
    
零宽断言(Lookahead/Lookbehind)
  • 正向肯定预查 (?=...)​:匹配后面紧跟特定模式的位置。

    # 匹配后面跟着 "px" 的数字,如 "100px"
    pattern = r"\d+(?=px)"
    print(re.findall(pattern, "200px 300em 150px"))  # ['200', '150']
    
  • 负向否定预查 (?!...)​:匹配后面不跟特定模式的位置。

    # 匹配不以 "px" 结尾的数字,如 "200em"
    pattern = r"\d+(?!px)"
    print(re.findall(pattern, "200px 300em 150px"))  # ['300']
    
正则表达式修饰符
修饰符描述示例
​re.I​忽略大小写​re.findall(r"apple", "Apple", re.I)​ → ['Apple']​
​re.M​多行模式使 ^​ 和 $​ 匹配每行的开头和结尾
​re.S​让 .​ 匹配包括换行符在内的所有字符​re.findall(r"a.*b", "a\nb", re.S)​ → ['a\nb']​

相关文章:

Python--正则表达式

1. 日志打印与终端颜色控制 1.1 使用 loguru​ 打印日志 from loguru import loggerlogger.debug("调试信息") logger.info("普通信息") logger.warning("警告信息") logger.error("错误信息") logger.success("成功信息"…...

【java面试】线程篇

1.什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。 2.线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任…...

分布式光纤传感:为生活编织“感知密网”

分布式光纤测温技术虽以工业场景为核心,但其衍生的安全效益已逐步渗透至日常生活。 分布式光纤测温技术(DTS)作为一种先进的线型温度监测手段,近年来在多个领域展现了其独特的优势。虽然其核心应用场景主要集中在工业、能源和基础…...

cmake Qt Mingw windows构建

今天教大家怎么在windows构建qt应用使用cmd命令行,而不是一键通过QtCreator一键构建。首先我们用qtcreator创建一个模板程序(PS:记得在安装qt时要悬着mingw套件,如果安装太慢可以换源) 输入以下的命令: mkdir build …...

无人机信号调制技术原理

一、调制技术的必要性 频谱搬移:将低频的基带信号搬移到高频的载波上,便于天线辐射和传播。 信道复用: 利用不同的载波频率或调制方式,实现多路信号同时传输,提高信道利用率。 抗干扰: 通过选择合适的调…...

书评与笔记:《如何有效报告Bug》

文章目录 书评笔记核心原则1. 首要目标:让程序员亲眼看到问题2. 次要目标:详细描述问题3. 保持冷静,避免误操作4. 提供额外信息5. 清晰、准确地表达 实用建议不要自作聪明地诊断问题类比:看医生时的症状描述程序员的心理 总结 原文…...

3.【线性代数】——矩阵乘法和逆矩阵

三 矩阵乘法和逆矩阵 1. 矩阵乘法1.1 常规方法1.2 列向量组合1.3 行向量组合1.4 单行和单列的乘积和1.5 块乘法 2. 逆矩阵2.1 逆矩阵的定义2.2 奇异矩阵2.3 Gauss-Jordan 求逆矩阵2.3.1 求逆矩阵 ⟺ \Longleftrightarrow ⟺解方程组2.3.2 Gauss-Jordan求逆矩阵 1. 矩阵乘法 1.…...

[JVM篇]虚拟机性能监控、故障处理工具

虚拟机性能监控、故障处理工具 基础故障处理工具 jps(JVM Peocess Status Tool - 虚拟机进程状况工具) jstat(JVM Statistics Monitoring Too - 虚拟机统计信息监视工具) jinfo( Configuration info for Java - Java配置信息工具) jmap(Memory Map for…...

UniApp 中 margin 和 padding 属性的使用详解

margin 属性的作用与使用 margin 属性用于设置元素的外边距&#xff0c;也就是元素与其他元素之间的距离。它可以分别设置元素四个方向&#xff08;上、右、下、左&#xff09;的外边距&#xff0c;也支持使用简写形式来一次性设置多个方向的外边距。 <template><view…...

`fi` 是 Bash 脚本中用来结束 `if` 条件语句块的关键字

fi 是 Bash 脚本中 if 语句的结束标志&#xff0c;它用于结束一个 if 块。与其他编程语言&#xff08;如 C、Java&#xff09;中的 } 不同&#xff0c;Bash 使用 fi 来标识条件语句的结束。 语法示例&#xff1a; if [ condition ]; then# 如果条件为真时执行的代码echo &quo…...

cap2:1000分类的ResNet的TensorRT部署指南(python版)

《TensorRT全流程部署指南》专栏文章目录&#xff1a; cap1&#xff1a;TensorRT介绍及CUDA环境安装cap2&#xff1a;1000分类的ResNet的TensorRT部署指南&#xff08;python版&#xff09;cap3&#xff1a;自定义数据集训练ResNet的TensorRT部署指南&#xff08;python版&…...

每日一题——把数字翻译成字符串

把数字翻译成字符串 题目描述示例示例1示例2 题解动态规划代码实现复杂度分析 总结 题目描述 有一种将字母编码成数字的方式&#xff1a;‘a’->1, ‘b’->2, … , ‘z’->26。 现在给一串数字&#xff0c;返回有多少种可能的译码结果。 数据范围&#xff1a;字符串…...

我们来学HTTP/TCP -- 三次握手?

三次握手 题记三次呼叫结语 题记 来&#xff0c;我们来演示下川普王和普京帝会面了 哎呦&#xff01;你好你好&#xff0c;握手…哎嗨&#xff01;侬好侬好&#xff0c;握手…欧嘿呦玛斯&#xff0c;握手… 抓狂啊&#xff01;作孽啊!!! 不说人话啊! 关键的是&#xff0c;“三…...

多媒体软件安全与授权新范例,用 CodeMeter 实现安全、高效的软件许可管理

背景概述 Reason Studios 成立于 1994 年&#xff0c;总部位于瑞典斯德哥尔摩&#xff0c;是全球领先的音乐制作软件开发商。凭借创新的软件产品和行业标准技术&#xff0c;如 ReWire 和 REX 文件格式&#xff0c;Reason Studios 为全球专业音乐人和业余爱好者提供了一系列高质…...

SQL复习

SQL复习 MySQL MySQL MySQL有什么特点&#xff1f; MySQL 不支持全外连接。 安装 数据类型 MySQL中的数据类型分为哪些&#xff1f; MySQL中的数据类型主要分为三大类&#xff1a;数值类型、字符串类型、日期时间类型。 其中&#xff0c; 数值类型又分为七种&#xff1a;T…...

红队视角出发的k8s敏感信息收集——日志与监控系统

针对 Kubernetes 日志与监控系统 的详细攻击视角分析&#xff0c;聚焦 集群审计日志 和 Prometheus/Grafana 暴露 的潜在风险及利用方法 攻击链示例 1. 攻击者通过容器逃逸进入 Pod → 2. 发现未认证的 Prometheus 服务 → 3. 查询环境变量标签获取数据库密码 → 4. 通过审…...

Flask中获取请求参数的一些方式总结

在 Flask 中&#xff0c;可以从 request 对象中获取各种类型的参数。以下是全面整理的获取参数的方式及示例代码。 1. 获取 URL 查询参数&#xff08;Query String Parameters&#xff09; URL 中的查询参数通过 ?keyvalue&key2value2 的形式传递&#xff0c;使用 reques…...

架构——LVS负载均衡主要模式及其原理、服务水平、优缺点

LVS&#xff08;Linux Virtual Server&#xff09;是一款高性能的开源负载均衡软件&#xff0c;支持多种负载均衡模式。以下是其主要模式及其原理、服务水平、优缺点&#xff1a; 1. NAT 模式&#xff08;Network Address Translation&#xff09; 原理&#xff1a; 请求流程…...

【漫话机器学习系列】093.代价函数和损失函数(Cost and Loss Functions)

代价函数和损失函数&#xff08;Cost and Loss Functions&#xff09;详解 1. 引言 在机器学习和深度学习领域&#xff0c;代价函数&#xff08;Cost Function&#xff09;和损失函数&#xff08;Loss Function&#xff09;是核心概念&#xff0c;它们决定了模型的优化方向。…...

Android 13 上通过修改 AOSP 拦截 SystemUI 音量调节事件

定位关键代码SystemUI 的音量调节逻辑主要集中在以下类中: VolumeDialogController.java:负责与 AudioService 交互。 VolumeDialogImpl.java:处理 UI 交互事件(如按钮点击)。 PhoneWindowManager.java:处理物理按键事件(如音量键)。 拦截音量调节事件 以 VolumeDialog…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...