快速入門
教學
工具和語言
範例
參考
書籍評論
範例
正規表示式範例
數字範圍
浮點數
電子郵件地址
IP 位址
有效日期
數字日期轉換為文字
信用卡號碼
比對完整行
刪除重複行
程式設計
兩個相鄰的字詞
陷阱
災難性回溯
過多重複
拒絕服務
讓所有內容都變成選用
重複擷取群組
混合 Unicode 和 8 位元
本網站的更多資訊
簡介
正規表示式快速入門
正規表示式教學
取代字串教學
應用程式和語言
正規表示式範例
正規表示式參考
取代字串參考
書籍評論
可列印 PDF
關於本網站
RSS 饋送和部落格
RegexBuddy—The most comprehensive regular expression library!

正規表示式範例

以下,您將找到許多範例模式,供您使用並調整為自己的目的。製作每個正規表示式的關鍵技術都有說明,並附上連結至 教學 中對應的頁面,其中會詳細說明這些概念和技術。

如果您是正規表示式的新手,可以看看這些範例,了解正規表示式有哪些功能。正規表示式非常強大。學習正規表示式需要一些時間。但當您使用正規表示式在 EditPad ProPowerGREP 中自動執行搜尋或編輯工作,或是使用 各種語言 編寫腳本或應用程式時,您將很快就能收回這段時間。

RegexBuddy 提供最快速的方法來了解正規表示式。RegexBuddy 會分析任何正規表示式,並以清晰易懂的詳細大綱呈現給您。大綱會連結到 RegexBuddy 的正規表示式教學(與您在本網站上找到的教學相同),您隨時可以按一下一下取得深入資訊。

喔,而且您絕對不需要是程式設計師才能利用正規表示式!

擷取 HTML 標籤

<TAG\b[^>]*>(.*?)</TAG> 比對特定 HTML 標籤的開啟和關閉配對。標籤之間的任何內容都會擷取到第一個 反向參考 中。正規表示式中的問號會讓星號 變為非貪婪,以確保它在第一個關閉標籤之前停止,而不是像貪婪星號一樣在最後一個關閉標籤之前停止。這個正規表示式無法正確比對巢狀標籤,例如 <TAG>one<TAG>two</TAG>one</TAG>

<([A-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1> 將配對任何 HTML 標籤的開啟和關閉配對。請務必關閉大小寫敏感性。此解決方案的關鍵在於使用 反向參照 \1 在 regex 中。標籤之間的任何內容都會擷取到第二個反向參照中。此解決方案也不會配對嵌套在自身中的標籤。

修剪空白

您可以透過執行 regex 搜尋和取代,輕鬆修剪字串或文字檔中各行開頭和結尾不必要的空白。搜尋 ^[ \t]+ 並以空白取代,以刪除前導空白(空格和 tab)。搜尋 [ \t]+$ 以修剪尾隨空白。透過將正規表示式 合併^[ \t]+|[ \t]+$ 來執行這兩個動作。您可以將 [ \t](配對空格或 tab)擴充為 [ \t\r\n]字元類別,如果您也想要移除換行。或者,您可以改用 簡寫 \s

更詳細的範例

數字範圍。由於正規表示式使用文字而非數字,因此配對特定的數字範圍需要特別小心。

配對浮點數。也說明了在正規表示式中將所有內容設為選配的常見錯誤。

配對電子郵件地址。對於什麼是配對電子郵件地址的適當 regex,存在許多爭議。這是一個完美的範例,顯示您需要確切知道您嘗試配對的內容(以及不配對的內容),並且 regex 的複雜性和準確性之間總是存在權衡。

配對 IP 位址.

比對有效日期。一個正規表示式,比對 31-12-1999,但不會比對 31-13-1999。

尋找或驗證信用卡號碼。驗證在訂單表單中輸入的信用卡號碼。在文件中尋找信用卡號碼,以進行安全性稽核。

比對完整行。顯示如何比對文字檔案中的完整行,而不仅仅是滿足特定需求的行部分。此外,還顯示如何比對特定正規表示式比對的行。

移除重複行或項目。說明如何簡單但靈活地使用擷取括弧或反向參照。

處理原始碼的正規表示式範例。如何比對常見的程式語言語法,例如註解、字串、數字等。

兩個單字相鄰。顯示如何使用正規表示式模擬某些工具具有的「相鄰」運算子。

常見陷阱

災難性回溯。如果正規表示式似乎需要花費很長時間,或只是讓應用程式當機,它很可能已經發生災難性回溯。解決方案通常是更具體地說明要比對的內容,因此引擎必須嘗試的比對次數不會呈指數上升。

讓所有內容都可選。如果正規表示式中的所有部分都是可選的,它將比對任何位置的零長度字串。正規表示式需要表達不同的部分根據存在的部分而可選的事實。

重複擷取群組與擷取重複群組。重複擷取群組只會擷取群組的最後一個反覆。如果你想要擷取所有反覆,請擷取重複群組。

混合 Unicode 和 8 位元字元碼。在 Unicode 引擎和主旨字串中使用 8 位元字元碼,例如 \x80,可能會產生意外的結果。