正則表達式(捕獲組和非捕獲組)

數量詞 X? X,一次或一次也沒有 X* X,零次或屢次 X+ X,一次或屢次 X{n} X,剛好 n 次 X{n,} X,至少 n 次 X{n,m} X,至少 n 次,可是不超過 m 次 若是要對一段字符進行重複,就須要有用到分組,分組在正則中用"()"表示.而後後面能夠對這個組進行重複 引用.例如(123) 123就是一個組. 分組有兩種概念,非捕獲組和捕獲組 捕獲組 ( ) 每個捕獲組都會有編號,這個編號是從左至右經過括號來計算的.例如 (A(B)(CD)) 第1組:(A(B)(CD)) 第2組:(B) 第3組:(CD)正則表達式

在正則表達式中能夠對捕獲組進行引用。內存

下面寫一個對捕獲組進行引用的例子 選取靚號 數字所有相同的號碼(AAAAAA) (\d)\1{6,} 首先會獲取第一位爲0-9的數字,而後\1引用第一組裏面內容而後重複6次或者6次以上.資源

說明 每一對括號會分配一個編號,使用 () 的捕獲根據左括號的順序從 1 開始自動編號。捕獲元素編號爲零的第一個捕獲是由整個正則表達式模式匹配的文本。 非捕獲組(?:xxx)搜索

以 (?) 開頭的組是純的非捕獲 組,它不捕獲文本 ,也不針對組合計進行計數。就是說,若是小括號中以?號開頭,那麼這個分組就不會捕獲文本,固然也不會有組的編號,所以後面也不能引用。引用

表達式 方向 說明 (?=xxx) 正向預搜索(向右) 正向預搜索,判斷當前位置右側是否能匹配指定表達式 (?!xxx) 正向預搜索(向右) 正向預搜索否認,判斷當前位置右側是否不可以匹配指定表達式 (?<=xxx) 反向預搜索(向左) 反向預搜索,判斷當前位置左側是否可以匹配指定表達式 (?<!xxx) 反向預搜索(向左) 反向預搜索否認,判斷當前位置左側是否不可以匹配指定表達式字符

與普通分組不一樣的是,非捕獲組不記錄所匹配的內容,比普通分組更節約內存資源。 例子:數字

  1. (?<=2)88(?<!3) 88前面是2後面不能是3 2884 匹配 3882 不匹配
相關文章
相關標籤/搜索