Regex 參考 |
簡介 |
目錄 |
快速參考 |
字元 |
基本功能 |
字元類別 |
速記 |
錨點 |
字詞邊界 |
量詞 |
Unicode |
擷取群組和反向參照 |
命名群組和反向參照 |
特殊群組 |
模式修改器 |
遞迴和平衡群組 |
取代參考 |
字元 |
配對文字和反向參照 |
內容和大小寫轉換 |
條件 |
本網站的更多資訊 |
簡介 |
正規表示式快速入門 |
正規表示式教學 |
取代字串教學 |
應用程式和語言 |
正規表示式範例 |
正規表示式參考 |
取代字串參考 |
書籍評論 |
可列印 PDF |
關於本網站 |
RSS 饋送和部落格 |
功能 | 語法 | 說明 | 範例 | 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 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
註解 | (?#comment) | (?# 和 ) 之間的所有內容都會被 regex 引擎忽略。 | a(?#foobar)b 會配對 ab | 是 | 是 | 否 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 否 | 是 | 是 | 是 | 否 | ECMA | 是 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
分支重設群組 | (?|regex) | 如果分支重設群組內的 regex 具有多個具有擷取群組的選項,則所有選項中的擷取群組編號都相同。 | (x)(?|(a)|(bc)|(def))\2 會配對 xaa、xbcbc 或 xdefdef,其中第一個群組擷取 x,第二個群組擷取 a、bc 或 def | V2 | 否 | 否 | 5.10 | 7.2 | 是 | 5.2.4 | 是 | 是 | 否 | 否 | 否 | 否 | 否 | 否 | ECMA 1.42–1.83 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
原子群組 | (?>正規表示法) | 原子群組可防止正規表示法引擎在找到群組的配對後回溯到群組中。如果正規表示法的其餘部分失敗,如果量詞或交替使其成為可選的,引擎可能會回溯到群組。但它不會回溯到群組中以嘗試群組的其他排列。 | a(?>bc|b)c 配對 abcc 但不配對 abc | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 否 | 否 | 否 | 是 | 否 | ECMA | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
正向先行斷言 | (?=正規表示法) | 在先行斷言內部模式可以配對的位置配對。僅配對位置。它不消耗任何字元或擴充配對。在類似 one(?=two)three 的模式中,two 和 three 都必須在 one 的配對結束的位置配對。 | t(?=s) 配對 streets 中第二個 t。 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | ECMA | ECMA | 是 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
負向先行斷言 | (?!正規表示法) | 與正向先行斷言類似,但負向先行斷言僅在先行斷言內部的正規表示法無法配對時才會成功。 | t(?!s) 配對 streets 中第一個 t。 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | ECMA | ECMA | 是 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
正向後行斷言 | (?<=正規表示法) | 如果先行斷言內部的模式可以在該位置結束時配對,則在該位置配對。 | (?<=s)t 配對 streets 中第一個 t。 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 是 | 是 | 1.9 | 否 | ECMA | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
負向後行斷言 | (?<!正規表示法) | 如果先行斷言內部的模式無法在該位置結束時配對,則在該位置配對。 | (?<!s)t 配對 streets 中第二個 t。 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 是 | 是 | 1.9 | 否 | ECMA | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
後行斷言 | (?<=正規表示法|較長的正規表示法) | 後行斷言內的選項長度可能不同。 | (?<=is|e)t 配對 twisty streets 中第二個和第四個 t。 | 是 | 是 | 是 | 5.30 | 是 | 是 | 是 | 是 | 是 | 是 | 不適用 | 是 | 否 | 1.9 | 不適用 | ECMA 1.38–1.43 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
後行斷言 | (?<=x{n,m}) | 具有有限最大重複次數的量詞可用於後行斷言中。 | (?<=s\w{1,7})t 僅配對 twisty streets 中的第四個 t。 | 是 | 是 | 6 4 失敗 | 5.30 失敗 | 否 | 否 | 否 | 否 | 否 | 是 | 不適用 | 是 | 否 | 否 | 不適用 | 否 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
後行斷言 | (?<=正規表示法) | 完整的正規表示法語法可以用在反向後查中。 | (?<=s\w+)t 僅配對 twisty streets 中的第四個 t。 | 是 | 是 | 13 | 否 | 否 | 否 | 否 | 否 | 否 | 是 | 不適用 | 是 | 否 | 否 | 不適用 | 否 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
後行斷言 | (group)(?<=\1) | 反向參照可以用在反向後查中。反向後查中禁止的語法在被參照的擷取群組中也禁止使用。 | (\w).+(?<=\1) 在 twisty streets 中配對 twisty street。 | 是 | 是 | 否 | 否 | 否 | 10.23 | 7.3.0 | 否 | 4.0.0 | 是 | 不適用 | 是 | 3.5 | 否 | 不適用 | 否 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 | 不適用 |
將文字排除在正規表示法配對之外 | \K | 正規表示法左側部分配對到的文字會從整體正規表示法配對中省略。除此之外,正規表示法會從左到右正常配對。\K 左側的擷取群組會像平常一樣擷取。 | st 僅配對 streets 中的第一個 t。 | V2 | 否 | 否 | 5.10 | 7.2 | 是 | 5.2.4 | 是 | 是 | 否 | 否 | 否 | 否 | 2.0 | 否 | ECMA 1.42–1.83 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
反向後查條件式 | (?(?=regex)then|else) 其中 (?=regex) 是任何有效的反向後查,而 then 和 else 是任何有效的正規表示法 | 如果反向後查成功,則「then」部分必須配對才能讓整體正規表示法配對。如果反向後查失敗,則「else」部分必須配對才能讓整體正規表示法配對。反向後查的長度為零。「then」和「else」部分會像一般的正規表示法一樣消耗其配對。 | (?(?<=a)b|c) 在 babxcac 中配對第二個 b 和第一個 c。 | 是 | 是 | 否 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 否 | 否 | 否 | 否 | 否 | ECMA | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
隱含的反向後查條件式 | (?(regex)then|else) 其中 regex、then 和 else 是任何有效的正規表示法,且 regex 不是擷取群組的名稱 | 如果「regex」不是擷取群組的名稱,則會將其解釋為反向後查,就像你寫了 (?(?=regex)then|else) 一樣。如果反向後查成功,則「then」部分必須配對才能讓整體正規表示法配對。如果反向後查失敗,則「else」部分必須配對才能讓整體正規表示法配對。反向後查的長度為零。「then」和「else」部分會像一般的正規表示法一樣消耗其配對。 | (?(\d{2})7|c) 符合 747c 中的第一個 7 和 c | 否 | 是 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
命名條件 | (?(名稱)然後|否則) 其中 名稱 是擷取群組的名稱,然後 和 否則 是任何有效的正規表示式 | 如果具有給定名稱的擷取群組到目前為止參與了比對嘗試,則「然後」部分必須符合整體正規表示式才能符合。如果擷取群組到目前為止尚未參與比對,則「否則」部分必須符合整體正規表示式才能符合。 | (?<one>a)?(?(one)b|c) 符合 babxcac 中的 ab、第一個 c 和第二個 c | 是 | 是 | 否 | 否 | 6.7 | 是 | 5.2.0 | 是 | 是 | 否 | 否 | 否 | 是 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
命名條件 | (?(<名稱>)然後|否則) 其中 名稱 是擷取群組的名稱,然後 和 否則 是任何有效的正規表示式 | 如果具有給定名稱的擷取群組到目前為止參與了比對嘗試,則「然後」部分必須符合整體正規表示式才能符合。如果擷取群組到目前為止尚未參與比對,則「否則」部分必須符合整體正規表示式才能符合。 | (?<one>a)?(?(<one>)b|c) 符合 babxcac 中的 ab、第一個 c 和第二個 c | V2 | 否 | 否 | 5.10 | 7.0 | 是 | 5.2.2 | 是 | 是 | 否 | 否 | 否 | 否 | 2.0 | 否 | ECMA 1.42–1.83 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
命名條件 | (?('名稱')然後|否則) 其中 名稱 是擷取群組的名稱,然後 和 否則 是任何有效的正規表示式 | 如果具有給定名稱的擷取群組到目前為止參與了比對嘗試,則「然後」部分必須符合整體正規表示式才能符合。如果擷取群組到目前為止尚未參與比對,則「否則」部分必須符合整體正規表示式才能符合。 | (?'one'a)?(?('one')b|c) 符合 babxcac 中的 ab、第一個 c 和第二個 c | V2 | 否 | 否 | 5.10 | 7.0 | 是 | 5.2.2 | 是 | 是 | 否 | 否 | 否 | 否 | 2.0 | 否 | ECMA 1.42–1.83 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
條件 | (?(1)然後|否則) 其中 1 是擷取群組的編號,然後 和 否則 是任何有效的正規表示式 | 如果引用的擷取群組到目前為止參與了比對嘗試,則「然後」部分必須符合整體正規表示式才能符合。如果擷取群組到目前為止尚未參與比對,則「否則」部分必須符合整體正規表示式才能符合。 | (a)?(?(1)b|c) 符合 babxcac 中的 ab、第一個 c 和第二個 c | 是 | 是 | 否 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 否 | 否 | 是 | 2.0 | 否 | ECMA | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
相對條件 | (?(-1)然後|否則) 其中 -1 是負整數,然後 和 否則 是任何有效的正規表示式 | 條件會測試擷取群組,該群組可透過從條件正前方的最右邊開始,從右到左計算指定數量的命名或編號擷取群組的開啟括號來找到。如果引用的擷取群組到目前為止參與了比對嘗試,則「然後」部分必須符合整體正規表示式才能符合。如果擷取群組到目前為止尚未參與比對,則「否則」部分必須符合整體正規表示式才能符合。 | (a)?(?(-1)b|c) 符合 ab、babxcac 中的第一個 c 和第二個 c | V2 | 否 | 否 | 否 | 7.2 | 是 | 5.2.4 | 是 | 是 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
向前條件 | (?(+1)then|else),其中 +1 為正整數,而 then 和 else 為任何有效的正規表示式 | 條件會測試從「then」部分開始,從左到右依序計算命名的或編號的擷取群組的開啟括號數量,並找出符合指定數字的擷取群組。如果參考的擷取群組參與到目前為止的比對嘗試,則「then」部分必須符合才能讓整體正規表示式符合。如果擷取群組到目前為止尚未參與比對,則「else」部分必須符合才能讓整體正規表示式符合。 | ((?(+1)b|c)(d)?){2} 符合 bdbdccxcdcxcdb 中的 cc 和 cdb | V2 | 否 | 否 | 否 | 7.2 | 是 | 5.2.4 | 是 | 是 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
條件 | (?(+1)then|else),其中 1 是擷取群組的數字,而 then 和 else 為任何有效的正規表示式 | + 會被忽略,而數字會被視為擷取群組的絕對參考。如果參考的擷取群組參與到目前為止的比對嘗試,則「then」部分必須符合才能讓整體正規表示式符合。如果擷取群組到目前為止尚未參與比對,則「else」部分必須符合才能讓整體正規表示式符合。 | (a)?(?(+1)b|c) 符合 babxcac 中的 ab、第一個 c 和第二個 c | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 是 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
功能 | 語法 | 說明 | 範例 | 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 |