久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      正則表達(dá)式斷言、巡視(Assertions)、正向斷言、反向斷言介紹

      斷言(Assertions)在正則表達(dá)式概念里面難理解,它通常指的是在目標(biāo)字符串的當(dāng)前匹配位置進(jìn)行的一種測試但這種測試并不占用目標(biāo)字符串,也即不會移動模式在目標(biāo)字符串中的當(dāng)前匹配位置。詳細(xì)可以看看,正則表達(dá)式匹配解析過程探討分析(正則表達(dá)式匹配原理),里面提到“零寬度“很多元字符,只是對特殊位置進(jìn)行匹配,它們可以理解為斷言。

      斷言元字符

      常見斷言元字符有: b, B, A, Z, z, ^ ,$ 它們只是表示特殊位置,各自作用如有字符串AB,帶位置表示為:0A1B2

      元字符 意義(以上面帶位置字符串說明)
      ^ 行首,字符串首 表示位置0
      $ 行尾,字符串尾部,表示位置2
      b 字分界線,可以表示:0,2位置
      B 非字分界線,可以表示1位置
      A 目標(biāo)的開頭(獨(dú)立于多行模式) 表示位置0
      Z 目標(biāo)的結(jié)尾或位于結(jié)尾的換行符前(獨(dú)立于多行模式) 表示位置2
      z 目標(biāo)的結(jié)尾(獨(dú)立于多行模式)表示位置2
      G 目標(biāo)中的第一個匹配位置
      A,Z,z,G很少使用

      這些斷言的測試都是一些基于當(dāng)前位置的測試,斷言還支持更多復(fù)雜的測試條件。更復(fù)雜的斷言以子模式方式來表示,它包括先行(前向)斷言(Lookahead assertions)和后行(后向)斷言(Lookbehind assertions),這些斷言判斷只做匹配判斷條件,不會記錄在匹配結(jié)果中,不會匹配字符。

      先行斷言、正向斷言、正向巡視(Lookahead assertions)

      先行斷言,常有表示(?=pattern),從當(dāng)前匹配位置開始測試后面匹配字符串是否成立,還有(?!pattern)這樣兩種格式,我們來看看一個例子。源字符串:“abc100”,正則表達(dá)式是:
      /[a-z]+(?=d+)/ ,我們分析下過程如下圖:

      正則表達(dá)式斷言、巡視(Assertions)、正向斷言、反向斷言介紹

      首先由正則表達(dá)式字符 [a-z]+ 取得控制權(quán),匹配字符:”abc”,位置從”0”開始匹配,變成3。從該位置測試/d+是否成立。匹配到字符100,返回成立。因此正則表達(dá)式正向斷言成功。返回匹配字符串”abc”

      (?!pattern) 只是,正向匹配,當(dāng)后面沒有匹配成功,將返回真。以下是系統(tǒng)源字符串:abc100,測試結(jié)果如下:

      正則表達(dá)式斷言、巡視(Assertions)、正向斷言、反向斷言介紹

      后行斷言、反向斷言、反向巡視(Lookbehind assertions)

      后行斷言,常見表達(dá)式是:(?<=pattern)或者(?<!pattern)格式。正則表達(dá)式里面,不要出現(xiàn)不固定長度量詞,可能會出現(xiàn)死循環(huán)。匹配出錯。表示當(dāng)前位置左邊將出現(xiàn)匹配字符,則返回真,后面匹配正常。因?yàn)槿绻霈F(xiàn)在最左邊,默認(rèn)位置從0開始,匹配都是失敗的。一般都從后面正則表達(dá)式開始匹配,再回溯,直到匹配到為止。我們看看下面例子:源字符串:“abc100+=“,正則表達(dá)式是:”(?<=w)w+”,匹配過程如下圖:

      正則表達(dá)式斷言、巡視(Assertions)、正向斷言、反向斷言介紹

      首先由正則表達(dá)式字符 /w+/取得控制權(quán),匹配字符:”abc100”,位置從”0”開始匹配,匹配到6個字符。從該位置0檢測左變w匹配失敗。因此/w+/從字符b開始匹配到”bc100”,測試它左側(cè)有字符”a”,反向斷言正確。因此匹配到字符串“bc100”,(?<!pattern),只是沒有匹配成功返回真,其它都一樣!

      后記:從這篇文章,我們發(fā)現(xiàn)搜索特點(diǎn)都是從左到有,一般正向斷言放到,正則表達(dá)式后,反向斷言放到匹配正則表達(dá)式前。但是,這里也可以放到前或后。這里就不再舉例。歡迎交流討論!

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號