1. 程式人生 > >13-匹配組

13-匹配組

13.1 匹配組

你可以在表示式中使用圓括號來建立一個匹配組,匹配組中的內容將作為一個整體來看待。我們可以對一個匹配組使用量詞,或是使用匹配組來限制選擇符所能到達的範圍。

只有圓括號才能形成匹配組。方括號是定義字符集,花括號是定義量詞

13.2 建立捕獲組

你也可以使用圓括號()建立一個以數字命名的捕獲組。捕獲組所匹配到的內容將被引擎儲存起來。

例如表示式Set(Value)?可以匹配 Set 或者 SetValue。在第一種情況下,第一個(也是唯一的)捕獲組是空的。第二種情況捕獲組匹配 Value。

13.3 非捕獲組

如果你不想讓一個匹配組被捕獲,你可以使用非捕獲組,例如Set(?:Value)?

。圓括號(後面的?:可以建立一個非捕獲組。(後面的?和和表達末尾的?沒有關係,末尾的問號是一個量詞。你可能覺得問號同時具有兩種語義可以會造成歧義,但實際上著兩種語義不會發生衝突,因為作為量詞的問號出現在(的後面是沒有意義的,它不能修飾任何token,所以出現在(後面的問號只能是非匹配組的語法。

正則中還存在使用(?的其他型別的組,以後我們會提到。

支援具名匹配組的引擎通常支援把無名的匹配組設定為非捕獲組。

13.4 使用捕獲組所匹配到的字元

捕獲組可以儲存表示式中的部分匹配結果,並且通過回溯引用我們可以複用這些儲存的結果。Backreference還可以在字串替換中發揮作用。


如果文章出現錯誤,請給我提Issues - -

Github地址

需要進一步翻譯的內容:

  • 具名匹配組
  • 字串替換

原文