捕獲組就是把正規表示式中子表示式匹配的內容,儲存到記憶體中以數字編號或手動命名的組裡,以供後面引用。
表示式
說明
(expression)
普通捕獲組,將子表示式expression匹配的內容儲存到以數字編號的組裡
(?expression)
命名捕獲組,將子表示式expression匹配的內容儲存到以name命名的組裡
普通捕獲組(在不產生歧義的情況下,簡稱捕獲組)是以數字進行編號的,編號規則是以「(」從左到右出現的順序,從1開始進行編號。通常情況下,編號為0的組表示整個表示式匹配的內容。
命名捕獲組可以通過捕獲組名,而不是序號對捕獲內容進行引用,提供了更便捷的引用方式,不用關注捕獲組的序號,也不用擔心表示式部分變更會導致引用錯誤的捕獲組。
一些表示式中,不得不使用( ),但又不需要儲存( )中子表示式匹配的內容,這時可以用非捕獲組來抵消使用( )帶來的***。
表示式
說明
(?:expression)
進行子表示式expression的匹配,並將匹配內容儲存到最終的整個表示式的匹配結果中,但expression匹配的內容不單獨儲存到乙個組內
反向引用通常用來查詢重複的子串,或是限定某一子串成對出現。
表示式
說明
\1,\2
對序號為1和2的捕獲組的反向引用
\k
對命名為name的捕獲組的反向引用
環視只進行子表示式的匹配,匹配內容不計入最終的匹配結果,是零寬度的。
環視按照方向劃分有順序和逆序兩種,按照是否匹配有肯定和否定兩種,組合起來就有四種環視。環視相當於對所在位置加了乙個附加條件。
表示式
說明
(?<=expression)
逆序肯定環視,表示所在位置左側能夠匹配expression
(?
逆序否定環視,表示所在位置左側不能匹配expression
(?=expression)
順序肯定環視,表示所在位置右側能夠匹配expression
(?!expression)
順序否定環視,表示所在位置右側不能匹配expression
正規表示式高階
或 的小細節 替換匹配 任一側最大的表示式 2.正規表示式和相應編碼 3.正規表示式引擎 舉例簡單說明nfa與dfa工作的區別 比如有字串this is yansen s blog,正規表示式為 ya msen nsen nsem 不要在乎表示式怎麼樣,這裡只是為了說明引擎間的工作區別 nfa工作方...
正規表示式高階話題
1.表示式的遞迴匹配 有時候,我們需要用正規表示式來分析乙個計算式中的括號配對情況。比如,使用表示式 或者 可以匹配一對小括號。但是如果括號 內還嵌有一層括號的話 如 則這種寫法將不能夠匹配正確,得到的結果是 類似情況的還有 html 中支援巢狀的標籤如 等。本節將要討論的是,想辦法把有巢狀的的成對...
grep正規表示式 高階
正規表示式只是字串的一種描述,只有和支援正規表示式的工具相結合才能進行字串處理。本文以grep為例來講解正規表示式。grep命令 功能 輸入檔案的每一行中查詢字串。基本用法 grep acinv color auto a n b n 搜尋字串 檔名 引數說明 a 將二進位制文件以文字方式處理 c 顯...