在正則表達式中語法 (?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
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84707.shtml
英文地址,請注明出處:http://en.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;確保后續網站能…