Python 正規表示式:使用 re 模組進行模式匹配

掌握 Python 中的正規表示式 (Regex)。學習使用內建 re 庫搜尋、匹配、拆分和替換字串資料。

在編輯器中嘗試

概述

正規表示式(通常縮寫為 regex)是一種用於高級文字搜尋、字串匹配和操作的迷你語言。正規表示式允許您定義複雜的模式來搜尋大量文本,而不是檢查簡單的字串值。例如,查找文件中的所有電子郵件地址、電話號碼或 URL 以正規表示式表達很簡單,但使用普通字串方法編寫卻非常複雜。

Python 透過「re」模組提供對正規表示式的內建支援。此模組包括關鍵函數,例如用於查找第一個匹配項的“re.search()”、用於以列表形式檢索所有匹配子字串的“re.findall()”以及用於迭代匹配對象的“re.finditer()”。每個匹配對像都提供元數據,例如匹配子字串的確切開始和結束位置索引以及匹配文字本身。

正規表示式模式利用特殊的元字符:“\d”匹配任何數字,“\w”匹配字母數字字符,“+”匹配一個或多個重複,方括號“[...]”定義字符集。使用括號“(...)”分組可讓您提取模式的特定部分。此外,「re.sub()」可讓您搜尋模式並將其替換為新字串。儘管正規表示式的學習曲線很陡峭,但掌握它可以為您提供一個非常快速且多功能的文字處理工具。

程式碼和執行輸出

使用 re 模組驗證和提取電子郵件地址的組成部分。

import re

text = "Contact support at info@pyrun.xyz or developer@pyrun.xyz today."

# Pattern to match email addresses
email_pattern = r"([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})"

# Find all matches
emails = re.findall(email_pattern, text)
print("Emails found:")
for user, domain in emails:
    print(f"User: {user} | Domain: {domain}")

# Redacting emails using re.sub
redacted_text = re.sub(email_pattern, "[REDACTED]", text)
print(f"\nRedacted Text:\n{redacted_text}")
端子輸出
Emails found:
User: info | Domain: pyrun.xyz
User: developer | Domain: pyrun.xyz

Redacted Text:
Contact support at [REDACTED] or [REDACTED] today.

逐步實施

  • 驗證格式輸入(電子郵件、電話、密碼)
  • 解析伺服器存取日誌以取得狀態代碼
  • 從原始 HTML 和 Markdown 報告中抓取訊息

常見問題解答

正規表示式模式中「r」前綴的意義是什麼?

它表示“原始字串”。原始字串將反斜線 (\) 視為文字字符而不是轉義字符,從而避免與正則表達式通配符發生語法衝突。

re.match 和 re.search 有什麼不同?

re.match 僅檢查從字串開頭開始的匹配,而 re.search 掃描整個字串以查找匹配。

相關主題

推薦的 Python 資源

透過相關的互動式教學、備忘單和程式碼比較來擴展您的知識。