正則表達表中零寬斷言和后向引用

以下引用內(nèi)容均來自這里

  • (?=exp)##

斷言自身出現(xiàn)的位置的后面能匹配表達式exp。例如\w+(?=ing),可以匹配 后面是ing 的字符串,并且匹配到的內(nèi)容不包含后面的ing。"fasfing dancing doing".match(\w+(?=ing))匹配到的內(nèi)容是"fasf","danc","do"

(?=exp)也叫零寬度正預(yù)測先行斷言,它斷言自身出現(xiàn)的位置的后面能匹配表達式exp。比如\b\w+(?=ing\b),匹配以ing結(jié)尾的單詞的前面部分(除了ing以外的部分),如查找I'm singing while you're dancing.時,它會匹配sing和danc

  • (?<=exp)###

斷言自身出現(xiàn)的位置的前面能匹配表達式exp。。例如/(?<=[abcd])([13579])/,可以匹配 前面是a/b/c/d 的奇數(shù)(13579)。"a324r56f9b1c7".match(/(?<=[abcd])([13579])匹配到的內(nèi)容是"3","1","7"

(?<=exp)也叫零寬度正回顧后發(fā)斷言,它斷言自身出現(xiàn)的位置的前面能匹配表達式exp。比如(?<=\bre)\w+\b會匹配以re開頭的單詞的后半部分(除了re以外的部分),例如在查找reading a book時,它匹配ading。

  • 正則表達式中后向引用在ruby中的使用###

比如一個場景,要把字符串中的偶數(shù)加上前后中括號。則可以使用分組的情況

reg = /([24680])/
str = "1234567890"
puts str.gsub(reg, '[\1]') #=>1[2]3[4]5[6]7[8]9[0]

上面的\1指代的就是正則表達式中的分組1(即正則中從左起的第1個括號)中的匹配到的內(nèi)容

使用小括號指定一個子表達式后,匹配這個子表達式的文本(也就是此分組捕獲的內(nèi)容)可以在表達式或其它程序中作進一步的處理。默認情況下,每個分組會自動擁有一個組號,規(guī)則是:從左向右,以分組的左括號為標(biāo)志,第一個出現(xiàn)的分組的組號為1,第二個為2,以此類推。
后向引用用于重復(fù)搜索前面某個分組匹配的文本。例如,\1代表分組1匹配的文本。難以理解?請看示例:
\b(\w+)\b\s+\1\b可以用來匹配重復(fù)的單詞,像go go, 或者kitty kitty。這個表達式首先是一個單詞,也就是單詞開始處和結(jié)束處之間的多于一個的字母或數(shù)字(\b(\w+)\b),這個單詞會被捕獲到編號為1的分組中,然后是1個或幾個空白符(\s+),最后是分組1中捕獲的內(nèi)容(也就是前面匹配的那個單詞)(\1)。
你也可以自己指定子表達式的組名。要指定一個子表達式的組名,請使用這樣的語法:(?<Word>\w+)(或者把尖括號換成'也行:(?'Word'\w+)),這樣就把\w+的組名指定為Word了。要反向引用這個分組捕獲的內(nèi)容,你可以使用\k<Word>,所以上一個例子也可以寫成這樣:\b(?<Word>\w+)\b\s+\k<Word>\b。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 注:本篇文章只為方便查看,特此保留,如有冒犯,敬請諒解?。?! 本文目標(biāo) 30分鐘內(nèi)讓你明白正則表達式是什么,并對它...
    阿杰Alex閱讀 1,565評論 0 10
  • 正則表達式到底是什么東西?字符是計算機軟件處理文字時最基本的單位,可能是字母,數(shù)字,標(biāo)點符號,空格,換行符,漢字等...
    獅子挽歌閱讀 2,287評論 0 9
  • 參考文章 正則表達式30分鐘入門教程 學(xué)習(xí)之前 學(xué)習(xí)之前,先安裝一個Mac上用的軟件,來測試你的正則表達式是否正確...
    劉大帥閱讀 4,082評論 2 36
  • http://www.jb51.net/tools/zhengze.html 正則表達式30分鐘入門教程 版本:v...
    nullleaf閱讀 664評論 0 2
  • 轉(zhuǎn)載自正則表達式30分鐘入門教程 入門 學(xué)習(xí)正則表達式的最好方法是從例子開始,理解例子之后再自己對例子進行修改,實...
    夏天的風(fēng)_song閱讀 1,965評論 0 0

友情鏈接更多精彩內(nèi)容