<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    so true

    心懷未來,開創(chuàng)未來!
    隨筆 - 160, 文章 - 0, 評論 - 40, 引用 - 0
    數(shù)據(jù)加載中……

    PCRE Assertions

    首先明確幾點概念:
    1。斷言是一個對當(dāng)前匹配位置之前或之后的字符的測試;
    2。斷言不會實際消耗任何字符; #這一點至關(guān)重要
    通常的用法: (?<=a)b(?=c) #b的前瞻是c,后瞻是a;
    前瞻左置用法:(?=\d)\w+ #\w+需要以\d開始;
    后瞻右置用法:\w+(?<=\d) #\w+需要以\d結(jié)束;
    上面三種用法中,我們姑且把b和\w+稱為修飾項。
    對于后兩種用法,要求 前瞻/后瞻 里用以約束修飾項的字符應(yīng)當(dāng)是修飾項的子集,否則就不太合適,例如:
    a(?<=b)永遠不可能成立,因為a!=b;
    (?=a)b永遠不可能成立,因為a!=b;
    $ echo 'foobar' | grep -o -P '(?!foo)bar' #它不能用于查找之前出現(xiàn)所有不是 ”foo” 的 ”bar” 匹配, 它會查找到任意的 ”bar” 出現(xiàn)的情況, 因為 (?!foo) 這個斷言在接下來三個字符時 ”bar” 的時候是永遠都 TRUE 的(因為foo!=bar)。
    bar
    $ echo '!abcae20a' | grep -o -P '\w{4,}(?=.*\d)' #0用于支撐后面的前瞻斷言
    abcae2
    $ echo '!abcae20a' | grep -o -P '\w{4,}(?<=\d)' #0不需要拿出來支撐斷言
    abcae20
    $ echo '!abcae20' | grep -o -P '\w{4,}(?<=.*\d)' #后瞻斷言必須定長
    grep: lookbehind assertion is not fixed length
    $ echo '!abcae20' | grep -o -P '(?=.*\d)\w{4,}' #這個前瞻左置斷言不定長,而且前瞻過程中沒有任何字符約束,也比較詭異,匹配不出結(jié)果,最好不要這樣寫
    $ echo 'a2 abcae20a' | grep -o -P '(?=.*\d)\w+' #這個前瞻左置斷言不定長,而且前瞻過程中沒有任何字符約束,也比較詭異,只匹配出部分結(jié)果,最好不要這樣寫
    a2
    $ echo '!abcae20' | grep -o -P '(?=\w+\d)\w{4,}' #這個前瞻斷言雖然不定長,但是里面的字符都在修飾項的范疇內(nèi)
    abcae20
    $ echo 'a2 ab!cae20a' | grep -o -P 'a(?=.*\d)\w+' #注意對于第2組結(jié)果'ab',里面并不包含數(shù)字,但是其后面有數(shù)字20,因此前瞻斷言成立
    a2
    ab
    ae20a
    $ echo '!abcae20' | grep -o -P '.*?(?=.*\d)\w{4,}' #可以用最開始的.*來吸收不屬于\w的字符
    !abcae20
    $ echo '!a21ed0' | grep -o -P '(?=(?:\w*?\d){3,})\w{6,}' #實現(xiàn)了最終想要的功能:一個字符串至少有6個字符,而且至少有3個數(shù)字
    a21ed0
    總結(jié):前瞻斷言放在修飾項后面比較容易理解;放在修飾項前面時:主要用于概括性的規(guī)定修飾項里包含的內(nèi)容,因此此時的前瞻斷言里允許出現(xiàn)的字符應(yīng)該都是修飾項里可接受的字符
    更多詳細介紹可以參見:http://www.php.net/manual/zh/reference.pcre.pattern.syntax.php

    posted on 2013-11-20 20:27 so true 閱讀(355) 評論(0)  編輯  收藏 所屬分類: Linux

    主站蜘蛛池模板: 亚洲免费在线视频| 国产资源免费观看| 色天使亚洲综合一区二区| 99热在线免费观看| 亚洲AV无一区二区三区久久| 免费看成人AA片无码视频吃奶| 免费A级毛片无码视频| 日韩精品一区二区亚洲AV观看| 久久国产精品免费网站| 亚洲首页在线观看| 99在线观看免费视频| 亚洲欧洲日产国码二区首页| av大片在线无码免费| 亚洲视频无码高清在线| 国产片免费在线观看| jizz免费在线影视观看网站| 久久久久久久91精品免费观看 | 国产亚洲午夜高清国产拍精品| 在线播放国产不卡免费视频| 中文字幕亚洲一区| 中文字幕亚洲免费无线观看日本 | 亚洲成A人片777777| 69免费视频大片| 亚洲JIZZJIZZ妇女| 亚洲无人区午夜福利码高清完整版| 亚洲精品无码久久久久APP| 人人揉揉香蕉大免费不卡| 亚洲精品日韩中文字幕久久久| 在线观看免费宅男视频| 91亚洲国产成人久久精品网站| 青青久在线视频免费观看| 毛片亚洲AV无码精品国产午夜| 黑人大战亚洲人精品一区| 国产大片免费网站不卡美女| 国产精品亚洲专区无码牛牛| 亚洲精品无码久久久久| 99久久这里只精品国产免费| 99人中文字幕亚洲区| 国产成人高清精品免费鸭子 | 亚洲精品黄色视频在线观看免费资源| 亚洲日本一区二区|