在正则表达式中语法 (?P<名字>内容)

🎯 重点解释:?P<xxx> 是什么语法?

这一整段:

(?P<xxx>...)

是 Python 正则表达式中 “命名捕获组” 的语法。
咱们现在一个字一个字来解释:


(?...) 是干啥的?

这是一个捕获组,也叫“分组”,意思是:

我要提取括号里面的内容!

比如:

(\d+)

可以从字符串里提取数字,比如从 "年龄:28岁" 中提取出 "28"


?P<xxx> 是什么意思?

这就是 给这个捕获组起一个名字,叫 xxx

拆解:

  • ?:告诉正则引擎,“这是一个扩展语法(非普通分组)”。
  • P<xxx>:表示给当前这个组取个名,名叫 "xxx"

所以:

(?P<name>.+)

就表示:

我用括号 () 包了一段匹配规则(这里是 .+),
然后我给这段规则起了个名字"name"


✅ 为什么用 P?为什么写成 ?P<xxx>

这是 Python 独有的写法,全写法是:

(?P<名字>表达式)
  • P 是 Python 自己规定的标记(可以理解为 Python-style)
  • <xxx> 表示这个名字叫 xxx

它的意思是:

括号里的内容是一个命名分组,名字是 xxx

这是 Python 正则独有的语法。JavaScript、Java、Go 用的是别的写法(比如 (?<xxx>...))。


✅ 举例

📄 原始文本:

[客户] Alice Wang
[电话] 13900001111

📌 正则表达式:

\[客户]\s*(?P<name>.+)\n\[电话]\s*(?P<phone>\d+)

👆 里面有两个命名捕获组:

  • (?P<name>.+):抓 [客户] 后面的名字
  • (?P<phone>\d+):抓 [电话] 后面的数字

🧪 Python 提取代码:

import retext = "[客户] Alice Wang\n[电话] 13900001111"pattern = r"\[客户]\s*(?P<name>.+)\n\[电话]\s*(?P<phone>\d+)"match = re.search(pattern, text)if match:print("客户名:", match.group("name"))   # → Alice Wangprint("手机号:", match.group("phone"))  # → 13900001111

✅ 如果你不写 ?P<name> 会怎样?

那你只能用编号:

print(match.group(1))  # 拿第1个括号匹配到的内容
print(match.group(2))  # 拿第2个括号匹配到的内容

这种写法很容易搞混,不直观。


✅ 最终口诀

(?P<名字>表达式)

括号:提取内容
P<xxx>:给内容起个名字叫 xxx
→ 以后就可以用 match.group("xxx") 取出结果


✅ 对照表:命名捕获组 vs 普通捕获组

写法说明提取方式
(.+)普通分组match.group(1)
(?P<name>.+)命名分组match.group("name")

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

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

相关文章

中兴B860AV1.1_MSO9280_降级后开ADB-免刷机破解教程(非刷机)

中兴B860AV1.1江苏移动-自动降级包 关于中兴b860av1.1顽固盒子降级教程终极版 将附件解压好以后&#xff0c;准备一个8G以下的U盘重新格式化为FAT32格式后&#xff0c;并插入电脑 将以下文件及文件夹一同复制到优盘主目录下&#xff08;见下图&#xff09; 全选并复制到U盘主目…

2025-06-13【视频处理】基于视频内容转场进行分割

问题&#xff1a;从网上下载的视频文件&#xff0c;是由很多个各种不同的场景视频片段合并而成。现在要求精确的把各个视频片段从大视频里分割出来。 效果如图&#xff1a;已分割出来的小片段 思考过程 难点在于检测场景变化。为什么呢&#xff1f;因为不同的视频情况各异&am…

ReentrantLock和RLock

文章目录 前言一、 ReentrantLock&#xff08;单机锁&#xff0c;Java 内置&#xff09;示例&#xff1a;方法详解 二、RLock&#xff08;分布式锁&#xff0c;Redisson 提供&#xff09;示例:方法详解 三、 对比总结:四、 如何选择&#xff1f; 前言 ReentrantLock 和 RLock 都…

thinkphp ThinkPHP3.2.3完全开发手册

惯例配置 应用设定 APP_USE_NAMESPACE > true, // 应用类库是否使用命名空间 3.2.1新增 APP_SUB_DOMAIN_DEPLOY > false, // 是否开启子域名部署 APP_SUB_DOMAIN_RULES > array(), // 子域名部署规则 APP_DOMAIN_SUFFIX > , // 域名后缀 如果是…

Python Day50 学习(仍为日志Day19的内容复习)

补充&#xff1a;梳理超参数调整流程&#xff08;逻辑&#xff09; 超参数调节的流程逻辑可以总结为以下几个步骤&#xff1a; 1. 明确目标 确定你要优化的模型和评估指标&#xff08;如准确率、F1值、AUC等&#xff09;。 2. 选择要调节的超参数 列出模型中影响较大的超参数…

公司网络变差的解决方法(固定IP地址冲突)

问题描述 最近公司网络变差&#xff0c;不知道为什么。&#xff08;别的同事反馈的&#xff0c;本人没有感觉变差&#xff0c;也是比较奇怪的现象&#xff09; 现象有视频会议变卡等。 调查过程 1.领导给网络公司打电话沟通&#xff0c;对面远程看了下&#xff0c;不是设备问…

使用Prometheus+Grafana+Alertmanager+Webhook-dingtalk搭建监控平台

一、监控平台介绍 1.监控平台简述普罗米修斯四件套,分别为Prometheus、Grafana、Alertmanager、Webhook-DingTalk。Prometheus一套开源的监控&报警&时间序列数据库的组合,由SoundCloud公司开发,广泛用于云原生环境和容器化应用的监控和性能分析。其提供了通用的数据…

UR机器人解锁关节扭矩控制:利用英伟达Isaac Lab框架,推动装配自动化的Sim2Real迁移

在工业制造领域&#xff0c;机器人装配长期依赖固定自动化模式&#xff0c;面临部署成本高、适配性差等挑战。多部件装配是制造业、汽车及航空航天等行业中的核心环节。传统装配系统通常针对特定任务设计&#xff0c;依赖大量人工工程部署&#xff0c;灵活性不足&#xff0c;难…

ABB 605系列

系列概述 ABB Relion605系列是专为配电网设计的保护继电器产品系列&#xff0c;代表了中低压电力系统保护领域的技术基准。基于ABB在电力保护领域数十年的经验&#xff0c;该系列集成了最新的数字信号处理技术和网络通信能力&#xff0c;为变电站自动化提供了完整的解决方案。…

Python|GIF 解析与构建(6):手搓 tk 录制工具

目录 Python&#xff5c;GIF 解析与构建&#xff08;6&#xff09;&#xff1a;手搓 tk 录制工具 一、工具功能概览 二、核心架构设计 1. 帧率控制模块 2. 屏幕捕获模块 3. 主应用模块 三、关键技术解析 1. 屏幕捕获技术 2. 帧率控制原理 3. 透明窗口实现 四、使用指…

在VBA中,提取word表格的文本时,通常有什么干扰符号,需要清除

标题 在VBA中&#xff0c;提取word表格的文本时&#xff0c;通常有什么干扰符号,需要清除 正文 解决问题提取word表格的文本时&#xff0c;通常有什么干扰符号,需要清除 在VBA中提取Word表格文本时&#xff0c;常见的干扰符号及其清除方法如下&#xff1a; ⚠️ 一、主要干扰符…

C++基础学习:深入理解类中的构造函数、析构函数、this指针与new关键字

前言 在C面向对象编程中&#xff0c;类是构建复杂程序的基本单元。今天&#xff0c;我们将深入探讨类中的几个核心概念&#xff1a;构造函数、析构函数、this指针以及new关键字。这些概念对于理解C对象生命周期和内存管理至关重要。 1. 构造函数 构造函数是类的一个特殊成员…

2025 高考游记/总结

坐标GD 新课标一卷选手 前言 思绪有点乱&#xff0c;想想从哪里说起 没想到这个博客已经三年没发过东西了&#xff0c;上次发还是初三准备特长生的时候&#xff0c;一瞬间就已经高考结束了&#xff0c;有种不真实感 对于高中的三年&#xff0c;有很多话、很多感悟想说&#xff…

Python基础之函数(1/3)

函数(基础) [函数后续还会更新两次] 一.认识函数的作用 函数就是将一段具有独立功能的代码块整合到一个整体并命名&#xff0c;在需要的位置&#xff0c;调用这个名称即可完成对应的需求 函数在开发过程中&#xff0c;可以更高效的实现代码重用 二.函数的使用步骤 1定义函…

AWS CloudFormation实战:构建可复用的ECS服务部署模板

一、前言 在云原生时代,基础设施即代码(IaC)已成为DevOps实践的核心组件。AWS CloudFormation作为AWS原生的IaC服务,允许开发人员和系统管理员以声明式方式定义和部署AWS资源。本文将深入探讨如何构建一个通用的CloudFormation模板,用于在AWS ECS(Elastic Container Servic…

GRUB2 启动配置的工作原理与优先级规则详解

一、核心组件概述 /boot/loader/entries/ 类型:目录,存储 BLS (Boot Loader Specification) 格式的启动项配置文件(如 20-custom-kernel-5.14.0.conf)。管理工具:由 grubby、kernel-install 等工具自动生成或修改。配置内容:每个文件定义一个启动项的详细参数(内核路径、…

网页版便签应用开发:HTML5本地存储与拖拽交互实践

文章目录 摘要成品显示核心功能与实现语法1. 本地存储管理2. 拖拽功能实现3. 自动保存机制4. 时间格式化处理 完整代码 摘要 本文详细介绍了一个基于HTML5的便签应用开发过程&#xff0c;重点讲解了如何利用localStorage实现数据持久化存储&#xff0c;以及如何实现流畅的拖拽…

docker compose安装Prometheus、Grafana

1、创建目录结构 mkdir -p /opt/monitoring/{prometheus,grafana} mkdir -p /opt/monitoring/prometheus/{config,data} chmod -R 777 /opt/monitoring # 确保容器有写入权限 2、准备 Prometheus 配置文件 vi /opt/monitoring/prometheus/config/prometheus.yml global:sc…

稀土化合物在生态环境的应用

稀土化合物凭借强吸附性、催化活性及环境兼容性&#xff0c;已成为生态治理的关键材料。氧化物、氯化物、磷酸盐等基础产品&#xff0c;通过灵活复配与工艺适配&#xff0c;可高效解决水体净化、土壤修复、废气处理三大核心问题&#xff0c;推动环境治理向低耗高效转型。那么&a…

搭建网站应该怎样选择服务器?

互联网技术已经全面在各个地区进行发展&#xff0c;越来越多的企业选择线上业务&#xff0c;搭建属于自己的网站运营&#xff0c;以此来增加品牌的知名度并进行详细介绍&#xff0c;但是企业在进行搭建网站的前提&#xff0c;要选择一种合适的服务器&#xff0c;确保后续网站能…