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

在正则表达式中语法 (?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")

相关文章:

  • 2025.6.12 【校内 NOI 训练赛】记录(集训队互测选做)
  • 计算机视觉与深度学习 | 2024年至2025年图像匹配算法总结(原理,公式,代码,开源链接)
  • 如何将视频从 iPhone 传输到 HP 笔记本电脑
  • 2025年渗透测试面试题总结-字节跳动[实习]安全研发员(题目+回答)
  • 【QT系统相关】QT文件
  • 笔记本电脑安装win10哪个版本好_笔记本装win10专业版图文教程
  • 从 0 开始理解 Spring 的核心思想 —— IoC 和 DI(1)
  • 【论文解读】rStar:用互洽方法增强 SLM(小型语言模型) 推理能力
  • vue前端项目打包和部署
  • wireshark抓包过程
  • python可视化:从《歌手2025》到同类型节目全面解析
  • 机器学习中的数据准备关键技术
  • el-tree-select 多选树形下拉框,实现当选中时,根据当前选择的对象,动态生成表单数据。
  • 分布式爬虫系统设计与实现:跨节点MySQL存储方案
  • Vim、Nano 与 Emacs 的深度对比及嵌入式开发推荐
  • PHP语法基础篇(二):输出函数与字符串操作
  • uniapp-vue3-js-vite-pinia-eslint 快速开发模板
  • AKS升级路线最佳实践方案
  • 使用Amazon Elastic Beanstalk部署高考倒计时Flask应用:完整实践指南
  • 基于Python的热门微博数据可视化分析-Flask+Vue
  • 网站缺陷和优化的例子/培训机构网站
  • 网站需要服务器吗/今日头条热搜榜
  • 一个做网站的团队需要哪些/百度官网平台
  • 青岛国家高新区建设局网站/网络推广公司排行榜
  • 深圳购物网站建设价格/网站创建流程
  • 集团网银/太原网站seo