Python 正規表示式:使用 re 模組進行模式匹配
掌握 Python 中的正規表示式 (Regex)。學習使用內建 re 庫搜尋、匹配、拆分和替換字串資料。
概述
正規表示式(通常縮寫為 regex)是一種用於高級文字搜尋、字串匹配和操作的迷你語言。正規表示式允許您定義複雜的模式來搜尋大量文本,而不是檢查簡單的字串值。例如,查找文件中的所有電子郵件地址、電話號碼或 URL 以正規表示式表達很簡單,但使用普通字串方法編寫卻非常複雜。
Python 透過「re」模組提供對正規表示式的內建支援。此模組包括關鍵函數,例如用於查找第一個匹配項的“re.search()”、用於以列表形式檢索所有匹配子字串的“re.findall()”以及用於迭代匹配對象的“re.finditer()”。每個匹配對像都提供元數據,例如匹配子字串的確切開始和結束位置索引以及匹配文字本身。
正規表示式模式利用特殊的元字符:“\d”匹配任何數字,“\w”匹配字母數字字符,“+”匹配一個或多個重複,方括號“[...]”定義字符集。使用括號“(...)”分組可讓您提取模式的特定部分。此外,「re.sub()」可讓您搜尋模式並將其替換為新字串。儘管正規表示式的學習曲線很陡峭,但掌握它可以為您提供一個非常快速且多功能的文字處理工具。
程式碼和執行輸出
使用 re 模組驗證和提取電子郵件地址的組成部分。
regex_demo.py
在編輯器中嘗試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 資源
透過相關的互動式教學、備忘單和程式碼比較來擴展您的知識。