13-匹配組
阿新 • • 發佈:2019-01-13
13.1 匹配組
你可以在表示式中使用圓括號來建立一個匹配組,匹配組中的內容將作為一個整體來看待。我們可以對一個匹配組使用量詞,或是使用匹配組來限制選擇符所能到達的範圍。
只有圓括號才能形成匹配組。方括號是定義字符集,花括號是定義量詞。
13.2 建立捕獲組
你也可以使用圓括號()
建立一個以數字命名的捕獲組。捕獲組所匹配到的內容將被引擎儲存起來。
例如表示式Set(Value)?
可以匹配 Set 或者 SetValue。在第一種情況下,第一個(也是唯一的)捕獲組是空的。第二種情況捕獲組匹配 Value。
13.3 非捕獲組
如果你不想讓一個匹配組被捕獲,你可以使用非捕獲組,例如Set(?:Value)?
(
後面的?:
可以建立一個非捕獲組。(
後面的?
和和表達末尾的?
沒有關係,末尾的問號是一個量詞。你可能覺得問號同時具有兩種語義可以會造成歧義,但實際上著兩種語義不會發生衝突,因為作為量詞的問號出現在(
的後面是沒有意義的,它不能修飾任何token,所以出現在(
後面的問號只能是非匹配組的語法。
正則中還存在使用(?
的其他型別的組,以後我們會提到。
支援具名匹配組的引擎通常支援把無名的匹配組設定為非捕獲組。
13.4 使用捕獲組所匹配到的字元
捕獲組可以儲存表示式中的部分匹配結果,並且通過回溯引用我們可以複用這些儲存的結果。Backreference還可以在字串替換中發揮作用。
如果文章出現錯誤,請給我提Issues - -
Github地址
需要進一步翻譯的內容:
- 具名匹配組
- 字串替換