正規表示式參考 |
簡介 |
目錄 |
快速參考 |
字元 |
基本功能 |
字元類別 |
簡寫 |
錨點 |
字詞邊界 |
量詞 |
Unicode |
擷取群組與反向參照 |
命名群組與反向參照 |
特殊群組 |
模式修改器 |
遞迴與平衡群組 |
取代參考 |
字元 |
配對文字與反向參照 |
內容與大小寫轉換 |
條件式 |
此網站的其他資訊 |
簡介 |
正規表示式快速入門 |
正規表示式教學 |
取代字串教學 |
應用程式與語言 |
正規表示式範例 |
正規表示式參考 |
取代字串參考 |
書籍評論 |
可列印 PDF |
關於此網站 |
RSS Feed 與部落格 |
模式修改器語法包含兩個在正規表示式風格中不同的元素。括號和問號用於將修改器新增至正規表示式。根據其在正規表示式中的位置和正規表示式風格,它可能會影響整個正規表示式或其一部分。如果某種風格支援至少一種修改器語法,則它也會支援一個或多個字母,這些字母可用於修改器內部以切換特定模式。如果它不支援,則會針對該風格的所有字母標示「不適用」。
如果某種風格支援模式修改器,但並不支援特定字母,則會標示為「否」。這並不表示該風格完全沒有此模式。該風格可能仍有此模式,但沒有選項可以將其關閉。模式也不一定預設為關閉。例如,在大部分正規表示式風格中,^ 和 $ 預設只會在字串的開頭和結尾配對。但在 Just Great Software 應用程式和 Ruby 中,它們預設會在每行的開頭和結尾配對。在 JGsoft 應用程式中,您可以使用 關閉此模式,而在 Ruby 中您完全無法關閉此模式。 在 Ruby 中會影響點,而不是錨點。
下表只表示每種風格是否支援特定字母以切換特定模式。它並未表示預設值。
功能 | 語法 | 說明 | 範例 | JGsoft | .NET | Java | Perl | PCRE | PCRE2 | PHP | Delphi | R | JavaScript | VBScript | XRegExp | Python | Ruby | std::regex | Boost | Tcl ARE | POSIX BRE | POSIX ERE | GNU BRE | GNU ERE | Oracle | XML | XPath |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
模式修改器 | (?letters) 在正規表示式的開頭 | 正規表示式開頭的模式修改器會影響整個正規表示式,並覆寫正規表示式外部設定的任何選項。 | a 會比對 a 和 A。 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 否 | 是 | 是 | 是 | 否 | ECMA | 是 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
模式修改器 | (?letters) 在正規表示式的中間 | 正規表示式中間的模式修改器會影響整個正規表示式,並覆寫正規表示式外部設定的任何選項。 | test 會比對 test、teST、TEst 和 TEST。 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 是 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
模式修改器 | (?letters) 在正規表示式的中間 | 正規表示式中間的模式修改器只會影響修改器右邊的正規表示式部分。如果修改器用在群組內,它只會影響群組內修改器右邊的正規表示式部分。如果正規表示式或群組使用交替,修改器右邊的所有交替選項都會受到影響。 | test 會比對 test 和 teST,但不會比對 TEst 或 TEST。 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 否 | 否 | 否 | 是 | 否 | ECMA | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
修改器群組 | (?letters:regex) | 非擷取群組,其修改器只會影響群組內的正規表示式部分。 | te(?i:st) 會比對 test 和 teST,但不會比對 TEst 或 TEST。 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 否 | 否 | 3.6 | 是 | 否 | ECMA | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
否定修改器 | (?on-off) 和 (?on-off:regex) | 連字號前的修改器字母(如果有)會開啟,而連字號後的修改器字母會關閉。 | test 會比對 test 和 TEst,但不會比對 teST 或 TEST。 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 不適用 | 不適用 | 否 | 3.6 | 是 | 不適用 | ECMA | 否 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
重設修改器 | (?^) | 關閉所有選項。插入符號後面可以加上修飾符號,以重新開啟某些選項。 | test 會比對 test 和 TEst,但不會比對 teST 或 TEST。 | 否 | 否 | 否 | 5.14 | 否 | 10.32 | 7.3.0 | 否 | 4.0.0 | 不適用 | 不適用 | 否 | 否 | 否 | 不適用 | 否 | 否 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
不區分大小寫 | (?i) | 開啟不區分大小寫。 | a 會比對 a 和 A。 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 不適用 | 不適用 | 是 | 是 | 是 | 不適用 | ECMA | 是 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
區分大小寫 | (?c) | 開啟區分大小寫。 | a 會比對 a,但不會比對 A。 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 不適用 | 不適用 | 否 | 否 | 否 | 不適用 | 否 | 是 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
自由間距 | (?x) | 開啟自由間距模式,以忽略正規表示式代碼之間的空白,並允許 # 註解。 | a#b 會比對 a | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 不適用 | 不適用 | 是 | 是 | 是 | 不適用 | ECMA | 是 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
自由間距 | (?xx) | 開啟自由間距模式,以忽略正規表示式代碼之間的空白,並允許 # 註解,包括字元類別內外。 | [ a] 會比對 a,但不會比對 | 否 | 否 | 否 | 5.26 | 否 | 10.30 | 7.3.0 | 否 | 4.0.0 | 不適用 | 不適用 | 否 | 否 | 否 | 不適用 | 否 | 否 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
精確間距 | (?t) | 開啟「緊密」或精確間距模式,將空白和 # 字元視為字面值。 | a#b 會比對 a#b | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 不適用 | 不適用 | 否 | 否 | 否 | 不適用 | 否 | 是 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
單行 | (?s) | 讓點符號比對所有字元,包括換行字元。 | .* 會在 ab\n\ndef 中比對 ab\n\ndef | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 不適用 | 不適用 | 是 | 是 | 否 | 不適用 | ECMA | 否 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
多行 | (?m) | 讓 ^ 和 $ 分別比對每一行的開頭和結尾。 | ^. 會在 ab\n\ndef 中比對 a 和 d | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 不適用 | 不適用 | 是 | 是 | 否 | 不適用 | ECMA | 否 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
單行 | (?m) | 讓點符號比對所有字元,包括換行字元。 | .* 會在 ab\n\ndef 中比對 ab\n\ndef | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 不適用 | 不適用 | 否 | 否 | 是 | 不適用 | 否 | 否 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
Tcl 單行 | (?s) | 讓 ^ 和 $ 僅在字串的開頭和結尾做比對。讓點號比對所有字元,包含換行字元。 | ^.{3} 僅比對 ab\n 在 ab\n\ndef | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 不適用 | 不適用 | 否 | 否 | 否 | 不適用 | 否 | 是 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
Tcl 多行 | (?m) | 讓 ^ 和 $ 在每一行的開頭和結尾做比對。不允許點號和否定字元類別比對換行字元。 | ^. 會在 ab\n\ndef 中比對 a 和 d | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 不適用 | 不適用 | 否 | 否 | 否 | 不適用 | 否 | 是 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
Tcl 多行 | (?n) | 讓 ^ 和 $ 在每一行的開頭和結尾做比對。不允許點號和否定字元類別比對換行字元。 | ^. 比對 a 和 d 在 ab\n\ndef | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 不適用 | 不適用 | 否 | 否 | 否 | 不適用 | 否 | 是 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
Tcl「部分」換行敏感 | (?p) | 讓 ^ 和 $ 僅在字串的開頭和結尾做比對。不允許點號和否定字元類別比對換行字元。 | ^.* 僅比對 ab 在 ab\n\ndef | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 不適用 | 不適用 | 否 | 否 | 否 | 不適用 | 否 | 是 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
Tcl「奇怪」換行敏感 | (?w) | 讓 ^ 和 $ 在每一行的開頭和結尾做比對。讓點號比對所有字元,包含換行字元。 | ^. 比對 a、第一個 \n 和 d 在 ab\n\ndef | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 不適用 | 不適用 | 否 | 否 | 否 | 不適用 | 否 | 是 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
明確擷取 | (?n) | 一般括號是非擷取群組,而非編號擷取群組。只有命名擷取群組實際會擷取。 | (a|b)c 與 (?:a|b)c 相同 | 是 | 是 | 否 | 5.22 | 否 | 10.30 | 7.3.0 | 否 | 4.0.0 | 不適用 | 不適用 | 是 | 否 | 否 | 不適用 | 否 | 否 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
重複命名群組 | (?J) | 允許多個命名擷取群組共用相同名稱。 | (?:(?'x'a)|(?'x'b))\k'x' 符合 aa 或 bb | 否 | 否 | 否 | 否 | 6.7 | 是 | 5.2.0 | 是 | 是 | 不適用 | 不適用 | 否 | 否 | 否 | 不適用 | 否 | 否 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
非貪婪量詞 | (?U) | 切換 貪婪量詞和非貪婪量詞 的語法。強烈建議不要使用,因為它會混淆標準量詞語法的意義。 | a* 是非貪婪的,而 a*? 是貪婪的 | 否 | 否 | 否 | 否 | 是 | 是 | 是 | 是 | 是 | 不適用 | 不適用 | 否 | 否 | 否 | 不適用 | 否 | 否 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
UNIX 行 | (?d) | 當錨點符合換行符號,且點號不符合換行符號時,讓它們只辨識換行符號作為換行符號 | ^. 在 a\rb\nc 中符合 a 和 c | 否 | 否 | 是 | 否 | 否 | 否 | 否 | 否 | 否 | 不適用 | 不適用 | 否 | 否 | 否 | 不適用 | 否 | 否 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
BRE | (?b) | 將正規表示式解釋為 POSIX BRE | a\+ 符合 aaa | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 不適用 | 不適用 | 否 | 否 | 否 | 不適用 | 否 | 是 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
ERE | (?e) | 將正規表示式解釋為 POSIX ERE | [a\]+ 符合 a\a\a | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 不適用 | 不適用 | 否 | 否 | 否 | 不適用 | 否 | 是 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
文字 | (?q) | 將正規表示式解釋為文字字串(不包含修飾符) | [a\]+ 以文字方式符合 [a\]+ | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 不適用 | 不適用 | 否 | 否 | 否 | 不適用 | 否 | 是 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
額外語法 | (?X) | 將以反斜線跳脫且未形成正規表示式記號的字母視為錯誤,而不是文字。 | \q 是錯誤,而 \q 符合 q | 否 | 否 | 否 | 否 | 是 | 否 | 5.0.0–7.2.34 | 是 | 2.14.0–3.6.3 | 不適用 | 不適用 | 否 | 否 | 否 | 不適用 | 否 | 否 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
功能 | 語法 | 說明 | 範例 | JGsoft | .NET | Java | Perl | PCRE | PCRE2 | PHP | Delphi | R | JavaScript | VBScript | XRegExp | Python | Ruby | std::regex | Boost | Tcl ARE | POSIX BRE | POSIX ERE | GNU BRE | GNU ERE | Oracle | XML | XPath |
| 快速入門 | 教學 | 工具與語言 | 範例 | 參考 | 書籍評論 |
| 簡介 | 目錄 | 快速參考 | 字元 | 基本功能 | 字元類別 | 速記 | 錨點 | 字詞邊界 | 量詞 | Unicode | 擷取群組和反向參照 | 命名群組和反向參照 | 特殊群組 | 模式修改器 | 遞迴和平衡群組 |
頁面網址:https://regular-expressions.dev.org.tw/refmodifiers.html
頁面最後更新:2023 年 12 月 13 日
網站最後更新:2024 年 3 月 15 日
版權所有 © 2003-2024 Jan Goyvaerts。保留所有權利。