婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > 正則表達(dá)式之回溯

正則表達(dá)式之回溯

熱門標(biāo)簽:惠安地圖標(biāo)注 浙江營銷外呼系統(tǒng)有哪些 上海銷售電銷機(jī)器人軟件 自己做的電銷機(jī)器人 地圖標(biāo)注店鋪地圖標(biāo)注酒店 遼寧秒客來電話機(jī)器人 山東外呼系統(tǒng)聯(lián)系方式 淄博市張店區(qū)地圖標(biāo)注 哈爾濱公司外呼系統(tǒng)代理
關(guān)于“回溯”我也是第一次接觸,對它也不算很了解。下面就把我所了解的做為一個(gè)心德記錄下來,以備查看。

我們所使用的正則表達(dá)式的匹配基礎(chǔ)大概分為:優(yōu)先選擇最左端(最靠開頭)的匹配結(jié)果和標(biāo)準(zhǔn)的匹配量詞(*、+、?和{m, n})是匹配優(yōu)先的。

“優(yōu)先選擇最左端的匹配”顧名思義就是從字符串的起始位置開始匹配直到匹配結(jié)束這是基礎(chǔ);“標(biāo)準(zhǔn)匹配量詞”又分為“非確定型有窮自動(dòng)機(jī)(NFA)”也可以叫做“表達(dá)式主導(dǎo)”;另外一種是“確定型有窮自動(dòng)機(jī)(DFA)”也可以叫做“文本主導(dǎo)”。我們目前在JavaScript中所使用的正則表達(dá)式為“表達(dá)式主導(dǎo)”。表達(dá)式主導(dǎo)和文本主導(dǎo)解釋起來有些麻煩,先看來一個(gè)例子可能會(huì)清楚些。

復(fù)制代碼 代碼如下:

// 使用正則表達(dá)式匹配文本
var reg = /to(nite|knight|night)/;
var str = 'doing tonight';
reg.test(str);

在上面的這個(gè)例子中,第一個(gè)元素[t],它將會(huì)重復(fù)嘗試,直到目標(biāo)字符串中找到‘t'為止。之后,就檢查緊隨其后的字符是否能由[o]匹配,如果能,就檢查下面的元素(nite|knight|night)。它的真正含義是“nite”或者“knight”或者“night”。引擎會(huì)依次嘗試這3種可能。嘗試[nite]的過程是先嘗試[n],然后[i],然后[t],最后是[e]。如果這種嘗試失敗,引擎會(huì)嘗試另一種可能,如此繼續(xù)下去,直到匹配成功或是報(bào)告失敗。表達(dá)式中的控制權(quán)在不同的元素之間轉(zhuǎn)換,所以稱為“表達(dá)式主導(dǎo)”。

    同樣是上面的例子“文本主導(dǎo)”在掃描字符串時(shí),會(huì)記錄當(dāng)前有效的所有匹配可。當(dāng)引擎移動(dòng)到t時(shí),它會(huì)在當(dāng)前處理的匹配可能中添加一個(gè)潛在的可能:

字符串中的位置 正則表達(dá)中的位置
……doing tonight 可能的匹配位置:/to(nite|knight|nigth)/

 

接下來掃描的每個(gè)字符,都會(huì)更新當(dāng)前的可能匹配序列。繼續(xù)掃描兩個(gè)字符以后的情況是:

 

字符串中的位置 正則表達(dá)中的位置
……doing tonight 可能的匹配位置:/to(nite|knight|nigth)/

 

有效的可能匹配變?yōu)閮蓚€(gè)(knight被淘汰出局)。掃描到g時(shí),就只剩下一個(gè)可能匹配了。當(dāng)h和t匹配完成后,引擎發(fā)現(xiàn)匹配已經(jīng)完成,報(bào)告成功。“文本主導(dǎo)”是因?yàn)樗鼟呙璧淖址械拿總€(gè)字符都對引擎進(jìn)行了控制。

    如果想要弄明白“表達(dá)式主導(dǎo)”是如何工作的,那就要看一下我們今天的主題“回溯(backtracking)”。回溯就像是在走岔路口,當(dāng)遇到岔路的時(shí)候就先在每個(gè)路口做一個(gè)標(biāo)記。如果走了死路,就可以照原路返回,直到遇見之前所做過的標(biāo)記,標(biāo)記著還未嘗試過的道路。如果那條路也走不能,可以繼續(xù)返回,找到下一個(gè)標(biāo)記,如此重復(fù),直到找到出路,或者直到完成所有沒有嘗試過的路。

    在許多情況下,正則引擎必須在兩個(gè)(或更多)選項(xiàng)中做出選擇。當(dāng)遇到/……x?……/時(shí),引擎必須是否嘗試匹配X。對于/……X+……/的情況,毫無疑問,X至少嘗試匹配一次——因?yàn)榧犹栆蟊仨毱ヅ渲辽僖淮巍5谝粋€(gè)X匹配之后,此要求已經(jīng)滿足,需要決定是否嘗試下一個(gè)X。如果決定進(jìn)行,還要決定是否匹配第三個(gè)X,第四個(gè)X,如此繼續(xù)。每次選擇,其實(shí)就是做一個(gè)標(biāo)記,用于提示此處還有另一個(gè)可能的選擇,保留起來以備用。在回溯的過程中要考慮兩個(gè)要點(diǎn):哪個(gè)分支應(yīng)當(dāng)首先選擇?回溯的時(shí)候使用的是哪個(gè)(或者是哪些個(gè))之前保存的分支?

    第一個(gè)問題是按下面這條重要原則來選擇的:

        如果需要在“進(jìn)行嘗試”和“路過嘗試”之間選擇,對于匹配優(yōu)先量詞,引擎會(huì)優(yōu)先選擇“進(jìn)行嘗試”,而對于忽略優(yōu)先量詞,會(huì)選擇“路過嘗試”。

    第二個(gè)問題是按以下這條原則:

        距離當(dāng)前最近儲(chǔ)存的選項(xiàng)就是當(dāng)本地失敗強(qiáng)制回溯時(shí)返回的。使用的原則是LIFO(last in first out,后進(jìn)先出)。

    我們先來看幾個(gè)在道路中做標(biāo)記的例子:

        1、未進(jìn)行回溯的匹配

            用[ab?c]來匹配“abc”。[a]匹配之后,匹配的當(dāng)前狀態(tài)如下:

“abc” ab?c

            現(xiàn)在輪到[b?]了,正則引擎需要決定:是需要嘗試[b]呢,還是跳過?因?yàn)閇?]是匹配優(yōu)先的,它會(huì)嘗試匹配。但是,為了確保在這個(gè)嘗試最終失敗之后能夠恢復(fù),引擎會(huì)把:

“abc” ab?c
            添加到備用狀態(tài)序列中。也就是說,稍后引擎可能從下面的位置繼續(xù)匹配:從正則表達(dá)式中的[b?]之后,字符串的c之前(也就是說當(dāng)前的位置)匹配。這實(shí)際上就是跳過[b]的匹配,而問題容許這樣做。引擎做好標(biāo)記后,就會(huì)繼續(xù)向前檢查[b]。在示例中,它能夠匹配,所以新的當(dāng)前狀態(tài)變?yōu)椋?
“abc” ab?c

            最終的[c]也能成功匹配,所以整個(gè)匹配完成。備用狀態(tài)不再需要了,所以不再保存它們。

        2、進(jìn)行了回溯的匹配

            下面要匹配的文本是“ac”,在嘗試[b]之前,一切都與之前的過程相同。顯然,這次[b]無法匹配。也就是說,對[……?]進(jìn)行嘗試的路走不通了。因?yàn)橛幸粋€(gè)備用狀態(tài),這個(gè)“局部匹配失敗”產(chǎn)工會(huì)導(dǎo)致整體匹配失敗。引擎會(huì)進(jìn)行回溯,也就是說,把“當(dāng)前狀態(tài)”切換為最近保存的狀態(tài)。

“ac” ab?c

            在[b]嘗試之前保存的尚未嘗試的選項(xiàng)。這時(shí)候,[c]可以匹配c,所以整個(gè)匹配宣告完成。

        3、不成功的匹配

            現(xiàn)在要匹配的文本是“abx”。在嘗試[b]以前,因?yàn)榇嬖趩柼枺4媪诉@個(gè)備用狀態(tài):

“abx” ab?c

            [b]能夠匹配,但這條路往下卻走不通了,因?yàn)閇c]無法匹配x。于是引擎會(huì)回溯到之前的狀態(tài),“交還”b給[c]來匹配。顯然,這次測試也失敗了。如果還有其他保存的狀態(tài),回溯會(huì)繼續(xù)進(jìn)行,但是此時(shí)不存在其他狀態(tài),在字符串中當(dāng)前位置開始的整個(gè)匹配也就宣告失敗。

    目前對正則表達(dá)式的回溯只能理解這么多,以后我再慢慢補(bǔ)充吧!

您可能感興趣的文章:
  • PHP 正則表達(dá)式效率 貪婪、非貪婪與回溯分析(推薦)
  • 正則中的回溯定義與用法分析【JS與java實(shí)現(xiàn)】
  • 編寫高質(zhì)量的js之正確理解正則表達(dá)式回溯
  • 深度分析正則(pcre)最大回溯/遞歸限制
  • 小議正則表達(dá)式效率 貪婪、非貪婪與回溯
  • PHP正則表達(dá)式的效率 回溯與固化分組
  • AS3 js正則表達(dá)式 反向引用(backreference)
  • 詳解JavaScript正則表達(dá)式之分組匹配及反向引用
  • php正則表達(dá)式的模式修正符和逆向引用使用介紹
  • PHP正則表達(dá)式的逆向引用與子模式分析
  • JavaScript正則表達(dá)式之后向引用實(shí)例代碼
  • VBS教程:正則表達(dá)式簡介 -后向引用
  • 正則表達(dá)式學(xué)習(xí)教程之回溯引用backreference詳解

標(biāo)簽:無錫 長沙 綿陽 西安 銅川 宣城 泰州 重慶

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《正則表達(dá)式之回溯》,本文關(guān)鍵詞  正則,表達(dá)式,之,回溯,正則,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《正則表達(dá)式之回溯》相關(guān)的同類信息!
  • 本頁收集關(guān)于正則表達(dá)式之回溯的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    色综合视频一区二区三区高清| 色婷婷激情综合| 成人国产在线观看| 久久久久国产精品人| 国内精品免费在线观看| 91精品午夜视频| 日韩va亚洲va欧美va久久| 欧美一级高清片| 国产乱人伦偷精品视频免下载| 国产精品久久毛片a| 日本不卡的三区四区五区| 日韩一级免费一区| 欧美电影免费观看高清完整版在线| 奇米在线7777在线精品| 日韩综合在线视频| www.日韩大片| 中文字幕不卡在线观看| 国产精品中文欧美| 国产精品色眯眯| 成人黄色电影在线| 亚洲第一主播视频| 欧美一级搡bbbb搡bbbb| 美腿丝袜亚洲一区| 2021中文字幕一区亚洲| 美女www一区二区| 欧美一区二区三区在线| 国产一区二区精品在线观看| 亚洲日韩欧美一区二区在线| 91在线你懂得| 亚洲国产你懂的| 在线播放91灌醉迷j高跟美女 | 色爱区综合激月婷婷| 亚洲一区日韩精品中文字幕| 日韩午夜电影av| av影院午夜一区| 亚洲激情欧美激情| 在线观看91av| 色综合天天综合在线视频| 亚洲成a人v欧美综合天堂下载| 欧美日韩中文字幕一区| 激情综合五月天| 亚洲高清不卡在线观看| 国产欧美日产一区| 日韩视频不卡中文| 一本色道久久综合精品竹菊| 国产一区二区伦理| 精品亚洲aⅴ乱码一区二区三区| 中文一区在线播放| 欧美日韩大陆在线| 欧美午夜一区二区三区| 色系网站成人免费| eeuss鲁片一区二区三区在线看| 黄色日韩三级电影| 喷白浆一区二区| 日本不卡一二三区黄网| 亚洲成人av一区二区三区| 自拍偷拍亚洲综合| 最新不卡av在线| 亚洲日本一区二区| 亚洲欧美色图小说| 亚洲欧洲三级电影| 最好看的中文字幕久久| 国产精品丝袜在线| 欧美激情一区二区三区不卡| 久久久久久一二三区| 久久午夜老司机| 久久人人97超碰com| 久久久久久久久免费| 国产婷婷色一区二区三区| www亚洲一区| 久久久一区二区| 欧美韩国日本综合| 中文乱码免费一区二区| 国产精品成人午夜| 亚洲激情自拍视频| 日韩不卡在线观看日韩不卡视频| 日本成人在线不卡视频| 蜜臀av在线播放一区二区三区| 午夜精品久久久久影视| 日本不卡在线视频| 国产成+人+日韩+欧美+亚洲| 色综合天天在线| 欧美日韩一区小说| 91精品国产综合久久久久久漫画| 欧美亚洲动漫另类| 欧美日韩你懂得| 日韩女优av电影| 国产精品女主播av| 一个色综合网站| 九九视频精品免费| 97se亚洲国产综合自在线观| 欧美色中文字幕| 26uuuu精品一区二区| 综合在线观看色| 视频精品一区二区| 国产99久久久久| 欧美亚洲高清一区二区三区不卡| 欧美一区二区女人| 国产精品久久三| 亚洲国产成人高清精品| 国产在线精品一区二区夜色| 色综合视频在线观看| 欧美一区二区三区不卡| 国产精品热久久久久夜色精品三区 | 国产亚洲欧美一区在线观看| 中文字幕制服丝袜成人av| 婷婷国产v国产偷v亚洲高清| 国产69精品久久99不卡| 欧美三级电影精品| 中文字幕视频一区| 国产乱子伦视频一区二区三区 | 亚洲超碰精品一区二区| 国产成人午夜电影网| 欧美男男青年gay1069videost | 青青国产91久久久久久| 91亚洲精华国产精华精华液| 精品日本一线二线三线不卡| 尤物av一区二区| 国产在线不卡一区| 91精品在线一区二区| 一区二区日韩av| 99久久亚洲一区二区三区青草| 欧美大片一区二区| 日韩av中文字幕一区二区| 欧美在线影院一区二区| 亚洲美女电影在线| va亚洲va日韩不卡在线观看| 欧美精品一区视频| 久久精品国产99久久6| 欧美精品欧美精品系列| 亚洲国产日韩一级| 欧美综合色免费| 一区二区三区自拍| 不卡av在线网| 亚洲欧洲精品一区二区三区不卡| 国产福利不卡视频| 精品国产伦一区二区三区观看体验 | 日韩欧美专区在线| 视频一区视频二区中文| 欧美性大战久久久久久久| 亚洲综合免费观看高清完整版| 一本色道久久加勒比精品| 亚洲色图视频免费播放| 91小视频在线| 亚洲蜜桃精久久久久久久| 91麻豆文化传媒在线观看| 中文字幕一区二区三区视频| 99久久国产综合精品女不卡| ...中文天堂在线一区| 97精品国产露脸对白| 亚洲欧美经典视频| 在线观看免费成人| 日韩精品五月天| 久久综合九色综合97婷婷| 国产高清无密码一区二区三区| 国产亚洲精品aa午夜观看| 成人福利在线看| 一区二区三区免费观看| 欧美视频一区二区在线观看| 日韩av一区二区三区| 26uuu另类欧美亚洲曰本| 成人午夜免费av| 亚洲第一福利视频在线| 欧美一区二区日韩| 成人开心网精品视频| 亚洲图片欧美色图| 日韩欧美一区二区在线视频| 国产成人精品www牛牛影视| 亚洲免费观看高清在线观看| 欧美一区二区三区在线视频| 国产91对白在线观看九色| 亚洲精品视频在线看| 日韩精品一区二区三区中文精品| 成人免费看的视频| 亚洲高清免费观看| 国产精品嫩草99a| 欧美日韩夫妻久久| 波波电影院一区二区三区| 日本美女一区二区三区视频| 国产精品你懂的| 欧美一级欧美一级在线播放| 精品无人区卡一卡二卡三乱码免费卡 | 香蕉影视欧美成人| 久久久久99精品一区| 欧美性一二三区| 成人av第一页| 久久99国产精品麻豆| 亚洲欧美视频在线观看| 2023国产精品自拍| 欧美男女性生活在线直播观看| 国产夫妻精品视频| 久久国产精品99久久久久久老狼| 亚洲精品国产a久久久久久| 久久免费国产精品| 欧美美女一区二区| 91女神在线视频| 成人av资源在线观看| 激情综合网最新| 免费成人美女在线观看.| 亚洲精品综合在线|