Python正規表示式測試
工具用的順手嗎?
你的回饋能幫助我們做得更好
線上測試Python正規表示式模式,實時匹配結果、捕獲組和位置資訊,快速除錯文字處理規則。
re.I / i
re.M / m
re.S / s
re.X
re.A
請輸入正規表示式和待匹配文字
概覽
了解工具能解決的問題、計算或處理邏輯,以及資料邊界。
正規表示式是用文字模式描述要尋找內容的寫法。輸入模式與測試文字後,頁面會顯示命中數、標記命中的文字、匹配內容和捕獲組,方便先檢查模式是否符合一小段代表性資料。這個預覽使用瀏覽器的 JavaScript 正規表示式引擎;它不是在執行 CPython 的 re 模組。請在模式欄輸入正規表示式本身,例如 \d+,不要把 Python 原始字串的 r'...' 一起貼進去。
頁面會把 Python 常見的命名捕獲群組宣告 (?P<name>...) 轉成 JavaScript 使用的 (?<name>...) 後再編譯。這只處理該種群組宣告,不代表其他 Python 專屬語法或所有邊界行為都已對應。結果仍由 JavaScript 引擎判定;若某段模式包含特殊斷言、字元類或不同引擎才有的語法,可能得到不同結果或編譯錯誤。
旗標會改變比對範圍:忽略大小寫對應不區分大小寫;多行模式讓 ^ 和 $ 可按行判斷,且目前預設開啟;點號匹配換行會讓 . 包含換行字元。詳細模式會嘗試略過字元類以外的空白和 # 後註解;ASCII 選項是近似控制,不能當成 Python re.A 的完整實作。
匹配模式會列出所有命中,並顯示完整匹配、起始位置、長度、編號捕獲組和命名組;未參與該次匹配的群組會顯示未匹配。切換到替換模式可查看替換後文字;「全部替換」預設開啟,關閉後只替換第一個符合位置。替換欄採用 JavaScript 的群組語法,例如 $1 代表第一個捕獲組、$<name> 代表命名組;Python 程式常見的 \1 或 \g<name> 不應直接套用到這個欄位。
此頁不查詢地區名單或外部資料;結果只針對你輸入的樣本文字與模式。
指南
依步驟完成操作,並透過範例核對輸入與結果。
在模式欄輸入 (?P<code>[A-Z]{2})-(\d{4})。這裡輸入模式本身,不加 Python 程式碼中的 r'' 外層。
在測試文字欄輸入 AB-3816,再加一筆預期不應命中的資料,例如小寫的 ab-3816,觀察匹配數和高亮範圍是否符合預期。
展開匹配明細,核對完整命中、位置、長度、編號群組與命名群組。以上例來說,命名群組 code 應是 AB,第二個編號群組應是 3816。
需要測替換時切到替換模式,輸入 [$<code>:$2]。保持「全部替換」可預覽每個命中;取消後只預覽第一個。確認輸出後,再將適合的規則改寫或核對於實際 Python 程式。
情境
查看這項工具在不同工作與生活流程中的用法。
整理日誌或設定片段的人,可以用 (?P<field>[A-Z]+)=(.+) 測試像 USER=amy、ROLE=editor 這類分行欄位。保持「點號匹配換行」關閉時,. 不會跨過換行,因此可逐筆檢查命名組是否拿到欄位名稱、第二組是否拿到等號後內容;若結果不符,縮小樣本並逐段調整模式。
需要調整文字標籤的人,可用 ID-(\d{4}) 搭配幾筆假的測試編號,將替換內容設為 ticket-$1。先看匹配數,再查看替換後文字,能發現過度匹配或漏掉前綴的情況。這只用來檢視樣本,不會替你的正式檔案或 Python 專案直接修改內容。
問答
集中解答常見疑問與容易混淆的問題。
不用。請只輸入正規表示式,例如 \d+。r'...' 是 Python 原始字串的表示法,用來寫 Python 程式碼時減少反斜線的二次跳脫,不是模式的一部分。
不代表。模式經過有限的語法轉換後,仍由 JavaScript 正規表示式引擎執行。它適合先看常見寫法的效果,正式結果要在目標 Python 版本中重跑。
替換欄使用 JavaScript 替換格式,請改用 $1;命名捕獲組使用 $<name>。這和 Python 程式裡的替換參照寫法不同。
頁面的位置與長度沿用 JavaScript 字串索引;JavaScript 以 UTF-16 code units 計數。若命中前或命中內容含有部分表情符號等補充平面字元,數值可能和依 Unicode 字元計數的結果不同。
須知
使用前了解適用範圍、結果限制與必要提醒。
Python 與 JavaScript 的正規表示式是不同引擎,語法、Unicode 字元分類、錨點、斷言和回溯等細節可能不同。本頁的命名群組轉換及旗標只是選定寫法的預覽;ASCII 選項尤其不能證明符合完整的 Python re.A 行為。不要把一次命中或替換預覽當成程式已通過測試,也不要把此頁結果當成跨引擎精確偏移量。若規則會處理重要資料,請在實際 Python 執行環境中用正例、反例和邊界樣本重新驗證。輸入含有密碼、金鑰或個人資料時,先以虛構或遮蔽內容取代。
推薦
查找相關工具、專題與可用的 API 能力。