上一期講到了反向引用,那什麼是反向引用,咱們先來看一個demo
spa
其中1, 2的語法就叫作反向引用,他們分別表示捕獲到的第一個,第二個內容,最多可使用到9,表示捕獲到的第9個內容。
注意引用的,是捕獲到的內容,而不是捕獲規則。因此(\w)(\w)\1\2
表示的就是一個xyxy
的結構,所以匹配到了"cdcd"
。
下面舉幾個小栗子:3d
斷言又有不少中叫法,好比環視,巡視。斷言一共又分4種:code
不一樣語言叫法不一樣,先行後行,正向反向都是一個意思。blog
零寬能夠理解位它表示的是一個位置,而不是內容。
正則中表示位置的元字符有\b ^ $
等等,它們也都是零寬的。
上面的兩個demo,若是不用零寬斷言,則會將整個字符串給替換掉。
下面也舉幾個零寬斷言的例子:ip
這段正則能夠看到,先行斷言前面的匹配項是^
,幾個斷言分別表示,從頭開始,無論中間經歷了啥,始終有一個小寫英文字母/大寫英文字母/數字,特殊字符。
後面的[^\s]{8,12}
表示長度8到12的非空字符。要注意的是,這裏的斷言,匹配的不是後面的8到12位字符,而是知足斷言條件的開頭^
,字符串
正則只能從前日後匹配,這裏表示若是一個數字後面跟着的數字,每三個一組,到小數點恰好分完,則須要加入分隔符。it
以上就是正則的反向引用和零寬斷言了,是否是很簡單?class