本網站的其他內容 |
簡介 |
正規表示式快速入門 |
正規表示式教學 |
替換字串教學 |
應用程式和語言 |
正規表示式範例 |
正規表示式參考 |
替換字串參考 |
書籍評論 |
可列印 PDF |
關於本網站 |
RSS 摘要和部落格 |
本正規表示式教學會教導您正規表示式的每個面向。每個主題都假設您已閱讀並了解所有先前的主題。如果您是正規表示式的新手,您應該按照呈現的順序閱讀這些主題。
簡介說明教學的範圍和討論哪些 regex 風格。它也會介紹基本術語。
最簡單的 regex 僅包含文字字元。某些字元在 regex 中有特殊意義,必須加上跳脫字元。在軟體原始碼中使用 regex 時,跳脫規則可能會變得有點複雜。
使用控制字元跳脫或十六進位跳脫,可以更輕鬆地輸入不可列印字元,例如控制字元和特殊間距或換行字元。
首先檢視正規表示式引擎內部的內部結構。後面的主題建立在這些資訊上。瞭解引擎的內部結構有助於您建立符合預期,且不符合您不想要的正規表示式。
字元類別或字元集會比對出幾個可能的字元中的單一字元,包括個別字元和/或字元範圍。否定字元類別會比對出字元類別中不存在的單一字元。
簡寫字元類別讓您可以快速使用常見的字元集。您可以單獨使用簡寫,或將其用於字元類別的一部分。
字元類別減法讓您可以比對出存在於一個字元集,但不存在於另一個字元集中的字元。
字元類別交集讓您可以比對出存在於一個字元集,且也存在於另一個字元集中的字元。
點會比對任何字元,但通常不會比對換行字元,除非您變更選項。
錨點長度為零。它們不會比對任何字元,而是比對位置。有錨點可以比對主旨字串的開頭和結尾,以及比對每一行的開頭和結尾。
字詞邊界就像錨點,但會比對字詞的開頭和/或結尾。
透過用直線分隔不同的子正規表示式,您可以指示正規表示式引擎從左到右嘗試這些子正規表示式,並在其中一個可以比對時立即傳回成功。
在項目後加上問號,會指示正規表示式引擎在可能的情況下比對該項目,但如果無法比對,則繼續進行(而不是承認失敗)。
星號、加號和花括號這三種樣式的運算子讓您可以重複一個項目零次或多次、一次或多次,或任意次數。重要的是,除非您明確地將這些量詞設為「惰性」,否則它們預設為「貪婪」。
透過在正規表示式的一部分周圍加上括號,您可以指示引擎在套用量詞或將替代方案分組在一起時,將該部分視為單一項目。括號也會建立擷取群組,讓您可以重複使用正規表示式的一部分所比對到的文字。
對擷取群組的反向參照會比對先前由該擷取群組比對到的相同文字,讓您可以比對重複文字的模式。
如果使用命名的擷取群組和命名的反向參照,則具有多個群組的正規表示式更容易閱讀和維護。
在使用交替來比對同一件事的不同變體時,可以將變體放入分支重設群組中。然後,所有變體共用相同的擷取群組。這允許您使用反向參照或擷取比對文字的一部分,而無需檢查哪個變體擷取了它。
將正規表示式拆分為多行,新增註解和空白,使其更容易閱讀和理解。
如果您的正規表示式風格支援 Unicode,則可以使用特殊的 Unicode 正規表示式代碼來比對特定的 Unicode 字元,或比對具有特定 Unicode 屬性或屬於特定 Unicode 腳本或區塊的任何字元。
變更比對模式,例如正規表示式特定部分的「不區分大小寫」。
巢狀量詞會導致指數級增加的回溯,使正規表示式引擎陷入停頓。原子群組和佔有量詞提供了解決方案。
透過環顧(統稱為前瞻和後顧),您可以找到後接或不後接特定文字,以及前接或不前接特定文字的比對,而無需將前接或後接文字包含在整體正規表示式比對中。您也可以使用環顧來針對多個需求測試比對的相同部分。
將迄今為止比對的文字保持在整體正規表示式比對之外,允許您找到前接特定文字的比對,而無需將該前接文字包含在整體正規表示式比對中。此方法主要適用於對後顧支援有限或不支援後顧的正規表示式風格。
條件式是一種特殊結構,它會先評估環顧或反向參照,然後在環顧成功時執行一個子正規表示式,在環顧失敗時執行另一個子正規表示式。
遞迴在正規表示式中特定點再次比對整個正規表示式,這使得比對平衡結構成為可能。
子常式呼叫讓您可以撰寫正規表示式,在多個地方比對相同的結構,而無需重複正規表示式的部分。
支援遞迴和子常式呼叫的正規表示式類型,會以不同的方式處理遞迴和子常式呼叫中的擷取群組。
特殊反向參照會比對由擷取群組儲存在特定遞迴層級的文字,而不是該擷取群組最近比對到的文字。
支援遞迴和子常式呼叫的正規表示式類型,在遞迴或子常式呼叫失敗後,會以不同的方式進行回溯。
如果您使用 相容 POSIX 的正規表示式引擎,您可以使用 POSIX 方括號表示式比對與當地相關的字元。
當正規表示式可以找到零長度比對時,正規表示式引擎會使用不同的策略,避免在您想要反覆運算字串中的所有比對時,卡在零長度比對上。這可能會導致不同的比對結果。
強制正規表示式比對從前一次比對的結尾開始,提供一種解析文字資料的有效率方式。
| 快速入門 | 教學 | 工具和語言 | 範例 | 參考 | 書籍評論 |
| 簡介 | 目錄 | 特殊字元 | 不可列印字元 | Regex 引擎內部 | 字元類別 | 字元類別減法 | 字元類別交集 | 簡寫字元類別 | 點 | 錨點 | 字詞邊界 | 交替 | 可選項目 | 重複 | 群組和擷取 | 反向參照 | 反向參照,第 2 部分 | 命名群組 | 相對反向參照 | 分支重設群組 | 自由間距和註解 | Unicode | 模式修改器 | 原子群組 | 所有格量詞 | 前瞻和後顧 | 前瞻和後顧,第 2 部分 | 將文字保留在比對之外 | 條件式 | 平衡群組 | 遞迴 | 子常式 | 無限遞迴 | 遞迴和量詞 | 遞迴和擷取 | 遞迴和反向參照 | 遞迴和回溯 | POSIX 方括號表示式 | 零長度比對 | 繼續比對 |
頁面網址:https://regular-expressions.dev.org.tw/tutorialcnt.html
頁面最後更新日期:2019 年 11 月 22 日
網站最後更新日期:2024 年 3 月 15 日
版權所有 © 2003-2024 Jan Goyvaerts。保留所有權利。