国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

PHP擴展之文本處理(二)——PCRE正則表達式語法11——斷言

瀏覽:22日期:2022-09-16 08:25:14

一個斷言就是一個對當前匹配位置之前或之后的字符的測試, 它不會實際消耗任何字符。簡單的斷言代碼有b、B、 A、 Z、z、 ^、$ 等等。 更加復雜的斷言以子組的方式編碼。 它有兩種類型:前瞻斷言(從當前位置向前測試)和后瞻斷言(從當前位置向后測試)。

一個斷言子組的匹配還是通過普通方式進行的, 不同在于它不會導致當前的匹配點發(fā)生改變。?前瞻斷言中的正面斷言(斷言此匹配為真)以 ”(?=” 開始,消極斷言以 ”(?!” 開頭。比如,?w+(?=;)?匹配一個單詞緊跟著一個分號但是匹配結(jié)果不會包含分號,?foo(?!bar)?匹配所有后面沒有緊跟 ”bar” 的 ”foo” 字符串。 注意一個類似的模式?(?!foo)bar, 它不能用于查找之前出現(xiàn)所有不是 ”foo” 的 ”bar” 匹配, 它會查找到任意的 ”bar” 出現(xiàn)的情況, 因為 (?!foo) 這個斷言在接下來三個字符時 ”bar” 的時候是永遠都?TRUE?的。 前瞻斷言需要達到的就是這樣的效果。

后瞻斷言中的正面斷言以”(?<=”開始, 消極斷言以”(?<!”開始。比如,?(?<!foo)bar?用于查找任何前面不是 ”foo” 的 ”bar”。 后瞻斷言的內(nèi)容被嚴格限制為只能用于匹配定長字符串。但是,如果有多個可選分支, 它們不需要擁有相同的長度。比如?(?<=bullock|donkey)?是允許的, 但是?(?<!dogs?|cats?)?將會引發(fā)一個編譯期的錯誤。在最上級分支可以匹配不同長度的字符串是允許的。 相比較于 perl 5.005 而言,它會要求多個分支使用相同長度的字符串匹配。(?<=ab(c|de))?這樣的斷言是不允許的, 因為它單個的頂級分支可以匹配兩個不同的長度, 但是它可以接受使用兩個頂級分支的寫法?(?<=abc|abde)?這樣的斷言實現(xiàn), 對于每個可選分支,暫時將當前位置移動到嘗試匹配的當前位置之前的固定寬度處。 如果在當前沒有足夠的字符就視為匹配失敗。后瞻斷言與一次性子組結(jié)合使用可以用來匹配字符串結(jié)尾; 一個例子就是在一次性子組上給出字符串結(jié)尾。

多個斷言(任意順序)可以同時出現(xiàn)。 比如?(?<=d{3})(?<!999)foo?匹配前面有三個數(shù)字但不是 ”999” 的字符串 ”foo”。注意, 每個斷言獨立應用到對目標字符串該點的匹配。 首先它會檢查前面的三位都是數(shù)字, 然后檢查這三位不是 ”999”。 這個模式不能匹配 ”foo” 前面有三位數(shù)字然后緊跟 3 位非 999 共 6 個字符的字符串,比如, 它不匹配 ”123abcfoo”。 匹配 ”123abcfoo” 這個字符串的模式可以是(?<=d{3}…)(?<!999)foo。

這種情況下,第一個斷言查看(當前匹配點)前面的 6 個字符,檢查前三個是數(shù)字, 然后第二個斷言檢查(當前匹配點)前三個字符不是 ”999”。

斷言可以以任意復雜度嵌套。 比如?(?<=(?<!foo)bar)baz?匹配前面有 ”bar” 但是 ”bar” 前面沒有 ”foo” 的 ”baz”。 另外一個模式?(?<=d{3}…(?<!999))foo?則匹配前面有三個數(shù)字字符緊跟 3 個不是 999 的任意字符的 ”foo”。

斷言子組時非捕獲子組,并且不能用量詞修飾, 因為對同一件事做多次斷言是沒有意義的.如果所有的斷言都包含一個捕獲子組, 那么為了在整個模式中捕獲子組計數(shù)的目的,它們都會被計算在內(nèi)。然而, 子字符串的捕獲僅可以用于正面斷言,因為對于消極的斷言是沒有意義的。

將斷言計算在內(nèi),可以擁有的最大子組數(shù)量是 200 個。

標簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 91理论片午午伦夜理片久久 | 亚洲免费在线看 | 国产日本在线 | 九九视频免费观看 | 久久国产夜色精品噜噜亚洲a | 黄色不卡视频 | 精品在线观看视频 | 天堂免费在线视频 | 国产精品久久久久影院 | 一本久久精品一区二区 | 亚洲韩国日本欧美一区二区三区 | 久久曰视频 | 国产三级网站 | 欧美一级毛片免费观看 | 国产精品高清在线观看93 | 欧美一级毛片免费观看视频 | 国产一级aa大片毛片 | 久久精品免视看国产明星 | 国产免费观看a大片的网站 国产免费黄色网址 | 成人做爰全过程免费看网站 | 国产成人a一在线观看 | 亚洲欧美在线观看播放 | 久草视频资源在线 | 男女视频在线免费观看 | 欧美激情欧美狂野欧美精品免费 | a在线v| 午夜mm131美女做爰视频 | 国产欧美日韩精品a在线观看 | 一级欧美一级日韩毛片99 | 日韩精品在线一区二区 | 成人高清| 香港一级特黄高清免费 | 在线观看精品视频一区二区三区 | 日本丶国产丶欧美色综合 | 日韩欧美国产高清在线观看 | 成视频年人黄网站免费 | 国产高清美女一级a毛片久久w | 久久精品一区二区三区不卡牛牛 | 爱视频福利广场 | 香蕉网影院在线观看免费 | 91免费视|