快速入門
教學
工具和語言
範例
參考
書籍評論
Regex 參考
簡介
目錄
快速參考
字元
基本功能
字元類別
速記
錨點
字詞邊界
量詞
Unicode
擷取群組和反向參照
命名群組和反向參照
特殊群組
模式修改器
遞迴和平衡群組
取代參考
字元
配對文字和反向參照
內容和大小寫轉換
條件
本網站的更多資訊
簡介
正規表示式快速入門
正規表示式教學
取代字串教學
應用程式和語言
正規表示式範例
正規表示式參考
取代字串參考
書籍評論
可列印 PDF
關於本網站
RSS 饋送和部落格
RegexBuddy—Better than a regular expression reference!

正規表示式參考:特殊群組

功能語法說明範例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 會配對 xaaxbcbcxdefdef,其中第一個群組擷取 x,第二個群組擷取 abcdef V25.107.25.2.4ECMA
1.42–1.83
原子群組 (?>正規表示法) 原子群組可防止正規表示法引擎在找到群組的配對後回溯到群組中。如果正規表示法的其餘部分失敗,如果量詞或交替使其成為可選的,引擎可能會回溯到群組。但它不會回溯到群組中以嘗試群組的其他排列。 a(?>bc|b)c 配對 abcc 但不配對 abc ECMA
正向先行斷言 (?=正規表示法) 在先行斷言內部模式可以配對的位置配對。僅配對位置。它不消耗任何字元或擴充配對。在類似 one(?=two)three 的模式中,twothree 都必須在 one 的配對結束的位置配對。 t(?=s) 配對 streets 中第二個 t ECMAECMA
負向先行斷言 (?!正規表示法) 與正向先行斷言類似,但負向先行斷言僅在先行斷言內部的正規表示法無法配對時才會成功。 t(?!s) 配對 streets 中第一個 t ECMAECMA
正向後行斷言 (?<=正規表示法) 如果先行斷言內部的模式可以在該位置結束時配對,則在該位置配對。 (?<=s)t 配對 streets 中第一個 t 1.9ECMA
負向後行斷言 (?<!正規表示法) 如果先行斷言內部的模式無法在該位置結束時配對,則在該位置配對。 (?<!s)t 配對 streets 中第二個 t 1.9ECMA
後行斷言 (?<=正規表示法|較長的正規表示法) 後行斷言內的選項長度可能不同。 (?<=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.237.3.04.0.0不適用3.5不適用不適用不適用不適用不適用不適用不適用不適用不適用
將文字排除在正規表示法配對之外 \K 正規表示法左側部分配對到的文字會從整體正規表示法配對中省略。除此之外,正規表示法會從左到右正常配對。\K 左側的擷取群組會像平常一樣擷取。 s\Kt 僅配對 streets 中的第一個 t V25.107.25.2.42.0ECMA
1.42–1.83
反向後查條件式 (?(?=regex)then|else) 其中 (?=regex) 是任何有效的反向後查,而 thenelse 是任何有效的正規表示法 如果反向後查成功,則「then」部分必須配對才能讓整體正規表示法配對。如果反向後查失敗,則「else」部分必須配對才能讓整體正規表示法配對。反向後查的長度為零。「then」和「else」部分會像一般的正規表示法一樣消耗其配對。 (?(?<=a)b|c)babxcac 中配對第二個 b 和第一個 c ECMA
隱含的反向後查條件式 (?(regex)then|else) 其中 regexthenelse 是任何有效的正規表示法,且 regex 不是擷取群組的名稱 如果「regex」不是擷取群組的名稱,則會將其解釋為反向後查,就像你寫了 (?(?=regex)then|else) 一樣。如果反向後查成功,則「then」部分必須配對才能讓整體正規表示法配對。如果反向後查失敗,則「else」部分必須配對才能讓整體正規表示法配對。反向後查的長度為零。「then」和「else」部分會像一般的正規表示法一樣消耗其配對。 (?\d{2}7|c 符合 747c 中的第一個 7c
命名條件 (?(名稱)然後|否則) 其中 名稱 是擷取群組的名稱,然後否則 是任何有效的正規表示式 如果具有給定名稱的擷取群組到目前為止參與了比對嘗試,則「然後」部分必須符合整體正規表示式才能符合。如果擷取群組到目前為止尚未參與比對,則「否則」部分必須符合整體正規表示式才能符合。 (?<one>a(?(one)b|c 符合 babxcac 中的 ab、第一個 c 和第二個 c 6.75.2.0
命名條件 (?(<名稱>)然後|否則) 其中 名稱 是擷取群組的名稱,然後否則 是任何有效的正規表示式 如果具有給定名稱的擷取群組到目前為止參與了比對嘗試,則「然後」部分必須符合整體正規表示式才能符合。如果擷取群組到目前為止尚未參與比對,則「否則」部分必須符合整體正規表示式才能符合。 (?<one>a(?(<one>)b|c 符合 babxcac 中的 ab、第一個 c 和第二個 c V25.107.05.2.22.0ECMA
1.42–1.83
命名條件 (?('名稱')然後|否則) 其中 名稱 是擷取群組的名稱,然後否則 是任何有效的正規表示式 如果具有給定名稱的擷取群組到目前為止參與了比對嘗試,則「然後」部分必須符合整體正規表示式才能符合。如果擷取群組到目前為止尚未參與比對,則「否則」部分必須符合整體正規表示式才能符合。 (?'one'a(?('one')b|c 符合 babxcac 中的 ab、第一個 c 和第二個 c V25.107.05.2.22.0ECMA
1.42–1.83
條件 (?(1)然後|否則) 其中 1 是擷取群組的編號,然後否則 是任何有效的正規表示式 如果引用的擷取群組到目前為止參與了比對嘗試,則「然後」部分必須符合整體正規表示式才能符合。如果擷取群組到目前為止尚未參與比對,則「否則」部分必須符合整體正規表示式才能符合。 a(?(1)b|c 符合 babxcac 中的 ab、第一個 c 和第二個 c 2.0ECMA
相對條件 (?(-1)然後|否則) 其中 -1 是負整數,然後否則 是任何有效的正規表示式 條件會測試擷取群組,該群組可透過從條件正前方的最右邊開始,從右到左計算指定數量的命名或編號擷取群組的開啟括號來找到。如果引用的擷取群組到目前為止參與了比對嘗試,則「然後」部分必須符合整體正規表示式才能符合。如果擷取群組到目前為止尚未參與比對,則「否則」部分必須符合整體正規表示式才能符合。 (a)?(?(-1)b|c) 符合 abbabxcac 中的第一個 c 和第二個 c V27.25.2.4
向前條件 (?(+1)then|else),其中 +1 為正整數,而 thenelse 為任何有效的正規表示式 條件會測試從「then」部分開始,從左到右依序計算命名的或編號的擷取群組的開啟括號數量,並找出符合指定數字的擷取群組。如果參考的擷取群組參與到目前為止的比對嘗試,則「then」部分必須符合才能讓整體正規表示式符合。如果擷取群組到目前為止尚未參與比對,則「else」部分必須符合才能讓整體正規表示式符合。 ((?(+1)b|c)(d)?){2} 符合 bdbdccxcdcxcdb 中的 cccdb V27.25.2.4
條件 (?(+1)then|else),其中 1 是擷取群組的數字,而 thenelse 為任何有效的正規表示式 + 會被忽略,而數字會被視為擷取群組的絕對參考。如果參考的擷取群組參與到目前為止的比對嘗試,則「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