成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

PHP擴展之文本處理(二)——PCRE正則表達式語法9——重復/量詞

瀏覽:76日期:2022-09-16 08:16:15

重復次數(shù)是通過量詞指定的,可以緊跟在下面元素之后:

單獨的字符, 可以是經(jīng)過轉義的元字符。字符類后向引用(參加下一部分)子組(除非它是一個斷言)

一般的重復量詞指定了一個最小數(shù)值和一個最大數(shù)值的匹配次數(shù), 通過花括號包裹兩個數(shù)字,兩個數(shù)字之間用逗號隔開的語法定義。 兩個數(shù)值都必須小于 65536, 并且第一個數(shù)字必須小于等于第二個。 比如:?z{2,4}?匹配 ”zz”, “zzz”, “zzzz”。 單個的右花括號不是特殊字符。 如果第二個數(shù)字被省略,但是逗號仍然存在,就代表沒有上限; 如果第二個數(shù)字和逗號都被省略,那么這個量詞就限定的是一個確定次數(shù)的匹配。 比如?[aeiou]{3,}?匹配至少三個連續(xù)的元音字母,但是同時也可以匹配更多, 而?d{8}?則只能匹配 8 個數(shù)字。 左花括號出現(xiàn)在不允許使用量詞的位置或者與量詞語法不匹配時, 被認為是一個普通字符,對它自身進行原文匹配。 比如,{,6}就不是一個量詞, 會按照原文匹配四個字符 ”{,6}”。

量詞 {0} 是被授權的,它會導致的行為是認為前面的項和量詞不存在。

為了方便(以及歷史的兼容性),最常用的三個量詞都有單字符縮寫。

單字符量詞*等價于?{0,}+等價于?{1,}?等價于?{0,1}

可以通過一個不匹配任何字符的子模式后面緊跟一個匹配 0 或多個字符的量詞來構造一個沒有上限的無限循環(huán)。 比如:(a?)*

早期版本的 perl 和 pcre 對于這種模式會在編譯期得到一個錯誤。然而, 由于這在某些情況下是有用的,因此現(xiàn)在也接受這種模式了, 但是如果任何子模式的重復確實匹配不到任何字符,循環(huán)會被強制跳出。

默認情況下,量詞都是”貪婪”的,也就是說, 它們會在不導致模式匹配失敗的前提下,盡可能多的匹配字符(直到最大允許的匹配次數(shù))。 這種問題的典型示例就是嘗試匹配C語言的注釋。 出現(xiàn)在 /* 和 */ 之間的所有內(nèi)容都被認為是注釋, 在注釋中間, 可以允許出現(xiàn)單獨的 * 和 /。 對C注釋匹配的一個嘗試是使用模式?/*.**/, 假設將此模式應用在字符串 ”/* first comment*/ not comment /*second comment*/” 它會匹配到錯誤的結果,也就是整個字符串, 這是因為量詞的貪婪性導致的,它會嘗試盡可能多的匹配字符。

然而,如果一個量詞緊跟著一個 ?(問號) 標記,它就會成為懶惰(非貪婪)模式, 它不再盡可能多的匹配,而是盡可能少的匹配。 因此模式?/*.*?*/?在 C 的注釋匹配上將會正確的執(zhí)行。 各個量詞自身的意義并不會改變,而是由于加入了 ? 使其首選的匹配次數(shù)發(fā)生改變。 不要將 ? 的這個用法和它作為量詞的用法混淆。因為它又兩種用法, 因此有時它會出現(xiàn)量詞,比如?d??d?會更傾向于匹配一個數(shù)字, 但同時如果為了達到整個模式匹配的目的,它也可以接受兩個數(shù)字的匹配。譯注: 以模式 wd??dw 為例,對于字符串 ”a33a”,雖然 d?? 是非貪婪的, 但由于如果使用貪婪會導致整個模式不匹配,所以, 最終它選擇的仍然是匹配到一個數(shù)字。

如果?PCRE_UNGREEDY?選項被設置(一個在 perl 中不可用的選項), 那么量詞默認情況下就是非貪婪的了。但是, 單個的量詞可以通過緊跟一個 ? 來使其成為貪婪的。換句話說, PCRE_UNGREEDY 這個選項逆轉了貪婪的默認行為。

量詞后面緊跟一個 ”+” 是”占有”性。它會吃掉盡可能多的字符, 并且不關注后面的其他模式,比如?.*abc?匹配 ”aabc”, 但是?.*+abc?不會匹配, 因為?.*+?會吃掉整個字符串,從而導致后面剩余的模式得不到匹配。 自PHP 4.3.3 起, 可以使用占有符 (+) 修飾量詞來達到提升速度的目的。

當一個子組受最小數(shù)量大于 1 或有一個最大數(shù)量限制的量詞修飾時, 按照最小或最大的數(shù)量的比例需要更多的存儲用于編譯模式。

如果一個模式以 .* 或 .{0,} 開始并且?PCRE_DOTALL?選項開啟(等價于 perl 的/s), 也就是允許.匹配換行符,那么模式會隱式的緊固,因為不管怎么樣, 接下來都會對目標字符串中的每個字符位置進行嘗試,因此在第一次之后, 在任何位置都不會有一個對所有匹配重試的點。 PCRE 會想對待 A 一樣處理這個模式。 在我們已知目標字符串沒有包含換行符的情況下, 當模式以 .* 開始的時候我們?yōu)榱双@得這個優(yōu)化,值得設置?PCRE_DOTALL, 或者選擇使用 ^ 明確指明錨定。

譯注:這里的優(yōu)化指模式不匹配之后,不會回頭再來查找下一個位置, 比如沒有設置 PCRE_DOTALL,并且目標字符串第一個字符時換行符, 那么模式嘗試第一個字符,發(fā)現(xiàn)不匹配, 會重新用模式從第二個字符位置開始進行嘗試。 而使用了PCRE_DOTALL后, 是肯定匹配的….同理,當使用了 ^ 或者 /A的限定是,模式一旦不匹配,都可以直接退出, 而不用在目標字符串下一個位置再一次開始整個模式的匹配。

當一個捕獲子組時重復的時,捕獲到的該子組的結果是最后一次迭代捕獲的值。比如,?(tweedle[dume]{3}s*)+匹配字符串 ”tweedledum tweedledee”, 得到的的子組捕獲結果是 ”tweedledee”。然而,如果是嵌套的捕獲子組, 相應的捕獲值可能會被設置到之前的迭代中。比如,/(a|(b))+/?匹配字符串 ”aba”, 第二個捕獲子組得到的結果會是 ”b”。譯注:不理解然而之后的部分,以例子說明, b 是第二個子組最后一次捕獲到的結果,所以, 第二個子組最后結果是 b, 這是符合”然而”之前描述的規(guī)則的。

標簽: PHP
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
亚洲成人你懂的| 日韩欧美一区二区在线视频| 日韩欧美高清一区| 奇米精品一区二区三区在线观看| 国产精品美女诱惑| 国产精品乱码一区二区三区软件 | 99精品久久只有精品| 欧美三级在线视频| 精品一区二区av| 欧美精品色综合| 国产麻豆精品一区二区| 欧美高清www午色夜在线视频| 国产资源在线一区| 日韩欧美成人激情| 成人av网站大全| 久久综合九色欧美综合狠狠| 色综合久久综合网| 国产精品美女久久久久久 | 91美女片黄在线| 国产清纯白嫩初高生在线观看91 | 色综合久久久久综合99| 日韩激情av在线| 欧美午夜精品久久久久久孕妇| 青青青爽久久午夜综合久久午夜| 欧美午夜理伦三级在线观看| 国产精品自在在线| 2021久久国产精品不只是精品| 女人香蕉久久**毛片精品| 国产亚洲综合在线| 亚洲国产精品一区二区第四页av| 一区二区三区欧美激情| 亚洲一区三区视频在线观看| 日本亚洲欧美天堂免费| 欧美日韩高清影院| 不卡在线观看av| 国产精品女同一区二区三区| 99亚洲一区二区| 日本亚洲视频在线| 538在线一区二区精品国产| 波多野结衣中文字幕一区二区三区| 欧美国产一区二区在线观看| 99视频精品免费观看| 视频一区在线播放| 91精品国产色综合久久不卡电影| 91麻豆福利精品推荐| 亚洲精品中文在线影院| 在线视频一区二区三| 国产不卡一区视频| 国产精品国产a| 久久精彩视频| 国内精品不卡在线| 国产午夜精品理论片a级大结局| 亚洲精品黄色| 蜜桃av一区二区三区| 久久影视一区二区| 亚洲少妇在线| 麻豆精品久久久| 久久久久久久久伊人| 99成人精品| 极品少妇xxxx精品少妇| 国产视频一区在线观看 | 国产美女诱惑一区二区| 久久精品国产久精国产| 精品国产一区二区三区四区四 | 色综合视频在线观看| 亚洲乱码国产乱码精品精小说| 色综合久久久久久久| 99在线精品视频| 亚洲高清在线视频| 日韩一区二区精品葵司在线| 亚洲激情av| 国产揄拍国内精品对白| 国产精品三级av在线播放| 91国偷自产一区二区三区成为亚洲经典| 成人精品小蝌蚪| 亚洲成人精品一区二区| xf在线a精品一区二区视频网站| 国产乱码精品| 风间由美一区二区av101| 亚洲精品国产第一综合99久久| 欧美老年两性高潮| 18成人免费观看视频| 国产在线精品一区在线观看麻豆| 日本一区二区免费在线| 在线日韩av片| 好吊色欧美一区二区三区四区| 奇米影视7777精品一区二区| 国产亚洲精品久| 欧洲人成人精品| 色综合一个色综合亚洲| 人妖欧美一区二区| 欧美激情一区在线观看| 欧美日韩在线播放三区四区| 在线日韩av永久免费观看| 国产一区二区女| 亚洲综合丁香婷婷六月香| 制服丝袜中文字幕一区| 99精品福利视频| 成人久久18免费网站麻豆 | 欧美日韩精品三区| 国产视频不卡| 91网站视频在线观看| 日本欧美肥老太交大片| 国产精品欧美一区二区三区| 3d成人动漫网站| 久久亚裔精品欧美| 尹人成人综合网| 不卡av免费在线观看| 午夜精品久久久久久久久| 国产日韩欧美精品综合| 欧美女孩性生活视频| 国产精品一区二区欧美| 色综合天天综合给合国产| 韩国精品一区二区| 亚洲风情在线资源站| 亚洲国产精品精华液ab| 日韩一区二区视频| 色婷婷久久99综合精品jk白丝| 欧美日韩成人| 国产999精品久久| 水野朝阳av一区二区三区| 中文字幕一区二区三区在线播放| 日韩一区二区三区在线观看| 久久亚洲欧美| 99亚洲精品| 欧美日韩在线不卡一区| 丰满亚洲少妇av| 久久国产夜色精品鲁鲁99| 亚洲成人久久影院| 亚洲欧美日韩综合aⅴ视频| 久久久一区二区三区捆绑**| 欧美人与禽zozo性伦| 久久一区二区三区av| 国产欧美日韩综合一区在线播放| 91麻豆国产自产在线观看| 国产高清精品久久久久| 免费黄网站欧美| 亚洲成在人线免费| 亚洲免费观看在线观看| 国产精品亲子伦对白| 26uuu亚洲| 日韩亚洲欧美高清| 欧美精品日日鲁夜夜添| 欧美午夜精品一区二区蜜桃| 久久久久久久久久久久久久一区| 99综合在线| 在线不卡视频| 国产精品xnxxcom| 午夜精品久久久久99热蜜桃导演 | 合欧美一区二区三区| 91麻豆免费视频| gogo大胆日本视频一区| 大胆亚洲人体视频| 国产大陆亚洲精品国产| 国产裸体歌舞团一区二区| 激情六月婷婷久久| 激情六月婷婷综合| 精品一区二区三区久久| 久久9热精品视频| 美腿丝袜亚洲一区| 免费观看久久久4p| 首页欧美精品中文字幕| 日欧美一区二区| 日韩av中文字幕一区二区 | 亚洲永久精品国产| 一区二区三区四区不卡在线| 亚洲免费av高清| 又紧又大又爽精品一区二区| 亚洲视频一区在线观看| 成人免费在线视频| 亚洲日本韩国一区| 亚洲精品视频在线看| 夜夜嗨av一区二区三区网页| 一级日本不卡的影视| 香港成人在线视频| 日韩国产精品大片| 免费在线欧美视频| 青娱乐精品视频| 精品在线播放午夜| 国产成人免费在线| 99久久国产免费看| 欧美一区91| 亚洲夜间福利| 中文亚洲免费| 久久亚裔精品欧美| 欧美日韩中文字幕一区| 91精品久久久久久蜜臀| 精品处破学生在线二十三| 国产欧美在线观看一区| 中文字幕日本不卡| 亚洲一二三四区不卡| 婷婷成人激情在线网| 日韩av电影一区| 国产在线精品国自产拍免费| 成人三级在线视频| 欧美91福利在线观看| 在线精品观看| 欧美专区18| 欧美区视频在线观看| 精品噜噜噜噜久久久久久久久试看 |