正則表示式/語法
外觀
< 正則表示式
正則表示式有幾種變體。這些變體不僅在具體語法上有所不同,而且在功能上也有所不同。支援正則表示式的各個工具也各有其特點。
- 簡單正則表示式 - 廣泛用於向後相容,但在符合 POSIX 的系統上已棄用。
- 基本正則表示式 - 一些 Unix shell 工具使用
- Perl 相容正則表示式 - Perl 和一些應用程式使用
- POSIX 基本正則表示式 - 提供擴充套件以確保實用程式之間的一致性。一些傳統的 Unix 工具實現不支援這些擴充套件。
- POSIX 擴充套件正則表示式 - 一些 Unix 實用程式可以透過 -E 命令列開關支援
- 非 POSIX 基本正則表示式 - 提供 POSIX 不支援的其他字元類
- Emacs 正則表示式 - Emacs 編輯器使用
- Shell 正則表示式 - 用於模式匹配和檔名替換的有限形式的正則表示式
量詞(如 * 和 +)匹配儘可能多的字元:它們是貪婪的。對於某些用途,它們的貪婪性並不合適。例如,假設您想在以下文字中找到第一個用引號括起來的字串
- 這些詞包括“貓”、“墊”和“拍”。
模式 ".*" 匹配下面文字的斜體部分,即“貓”、“墊”和“拍”,而不是所需的“貓”
- 這些詞包括“貓”、“墊”和“拍”。
為了解決這個問題,某些正則表示式風格提供了非貪婪運算子,如 *?、+?和 }?。在 PHP 中,在正則表示式的末尾新增“U”會使量詞變為非貪婪,例如 /".*"/U。在不支援這兩種選項的風格中,您可以指定不要匹配的內容,例如 ("[^"]*") 來修復討論的示例。但是,在處理括號表示式時,(\[\[[^\]]*\]\]) 無法匹配A B C [[D E] F G]]。
一個比較表或矩陣,顯示哪些正則表示式的特性或風格在哪個工具或程式語言中可用,可從 regular-expressions.info 獲取。