国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

php正則 前瞻跟后顧 分析應(yīng)用

2020-03-22 18:41:36
字體:
供稿:網(wǎng)友
php正則 前瞻和后顧 分析應(yīng)用

做日志分析工作的經(jīng)常需要跟成千上萬的日志條目打交道,為了在龐大的數(shù)據(jù)量中找到特定模式的數(shù)據(jù),常常需要編寫很多復(fù)雜的html' target='_blank'>正則表達式。例如枚舉出日志文件中不包含某個特定字符串的條目,找出不以某個特定字符串打頭的條目,等等。

?

正則表達式中有前瞻(Lookahead)和后顧(Lookbehind)的概念,這兩個術(shù)語非常形象的描述了正則引擎的匹配行為。需要注意一點,正則表達式中的前和后和我們一般理解的前后有點不同。一段文本,我們一般習(xí)慣把文本開頭的方向稱作“前面”,文本末尾方向稱為“后面”。但是對于正則表達式引擎來說,因為它是從文本頭部向尾部開始解析的(可以通過正則選項控制解析方向),因此對于文本尾部方向,稱為“前”,因為這個時候,正則引擎還沒走到那塊,而對文本頭部方向,則稱為“后”,因為正則引擎已經(jīng)走過了那一塊地方。

?

所謂的前瞻就是在正則表達式匹配到某個字符的時候,往“尚未解析過的文本”預(yù)先看一下,看是不是符合/不符合匹配模式,而后顧,就是在正則引擎已經(jīng)匹配過的文本看看是不是符合/不符合匹配模式。符合和不符合特定匹配模式我們又稱為肯定式匹配和否定式匹配。

現(xiàn)代高級正則表達式引擎一般都支持都支持前瞻,對于后顧支持并不是很廣泛,因此我們這里采用否定式前瞻來實現(xiàn)我們的需求。

?

第一個分組啥都沒有匹配到,而第二個分組卻匹配了整個字符串。再回過頭來好好分析一下剛才那個正則表達式。實際上,當(dāng)正則引擎解析到A區(qū)域的時候,就已經(jīng)開始執(zhí)行B區(qū)域的前瞻工作。這個時候發(fā)現(xiàn)當(dāng)A區(qū)域為Null的時候匹配成功――.*本來就允許匹配空字符,前瞻條件又滿足,A區(qū)域后面緊跟著的是“2009”字符串,而并不是robots。因此整個匹配過程成功匹配到所有條目。

?

將.*?移入前瞻表達式

?

?

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 深水埗区| 会宁县| 洛隆县| 诸城市| 尼玛县| 牡丹江市| 宝清县| 邵阳县| 德清县| 潼关县| 昭觉县| 明水县| 涿州市| 涟水县| 宁津县| 城固县| 城口县| 平安县| 开原市| 门源| 阜新| 大关县| 绍兴市| 屏边| 西盟| 定结县| 偃师市| 元氏县| 子洲县| 彰化县| 白河县| 霸州市| 东安县| 金川县| 车致| 博乐市| 九江市| 龙里县| 霍邱县| 海晏县| 墨江|