亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 正則表達式之回溯

正則表達式之回溯

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

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

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

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

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

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

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

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

 

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

 

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

 

有效的可能匹配變?yōu)閮蓚€(knight被淘汰出局)。掃描到g時,就只剩下一個可能匹配了。當h和t匹配完成后,引擎發(fā)現(xiàn)匹配已經(jīng)完成,報告成功。“文本主導(dǎo)”是因為它掃描的字符串中的每個字符都對引擎進行了控制。

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

    在許多情況下,正則引擎必須在兩個(或更多)選項中做出選擇。當遇到/……x?……/時,引擎必須是否嘗試匹配X。對于/……X+……/的情況,毫無疑問,X至少嘗試匹配一次——因為加號要求必須匹配至少一次。第一個X匹配之后,此要求已經(jīng)滿足,需要決定是否嘗試下一個X。如果決定進行,還要決定是否匹配第三個X,第四個X,如此繼續(xù)。每次選擇,其實就是做一個標記,用于提示此處還有另一個可能的選擇,保留起來以備用。在回溯的過程中要考慮兩個要點:哪個分支應(yīng)當首先選擇?回溯的時候使用的是哪個(或者是哪些個)之前保存的分支?

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

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

    第二個問題是按以下這條原則:

        距離當前最近儲存的選項就是當本地失敗強制回溯時返回的。使用的原則是LIFO(last in first out,后進先出)。

    我們先來看幾個在道路中做標記的例子:

        1、未進行回溯的匹配

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

“abc” ab?c

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

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

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

        2、進行了回溯的匹配

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

“ac” ab?c

            在[b]嘗試之前保存的尚未嘗試的選項。這時候,[c]可以匹配c,所以整個匹配宣告完成。

        3、不成功的匹配

            現(xiàn)在要匹配的文本是“abx”。在嘗試[b]以前,因為存在問號,保存了這個備用狀態(tài):

“abx” ab?c

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

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

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

標簽:無錫 長沙 綿陽 西安 銅川 宣城 泰州 重慶

巨人網(wǎng)絡(luò)通訊聲明:本文標題《正則表達式之回溯》,本文關(guān)鍵詞  正則,表達式,之,回溯,正則,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《正則表達式之回溯》相關(guān)的同類信息!
  • 本頁收集關(guān)于正則表達式之回溯的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    色综合久久天天综合观看| 国产成人欧美一区二区三区的| 国产不卡在线观看| 99热视热频这里只有精品| 久久久久久久久综合影视网| 欧美一级视频免费观看| 中文字幕97| 国产a视频| 青草国产在线观看| 日韩一级精品视频在线观看| 日本免费乱人伦在线观看 | 欧美另类videosbestsex久久| 国产极品精频在线观看| 日韩av成人| 欧美激情伊人| 精品国产香蕉在线播出| 成人影院一区二区三区| a级精品九九九大片免费看| 久久国产精品只做精品| 天天做日日爱夜夜爽| 黄视频网站在线看| 欧美a级片视频| 日韩专区第一页| 国产伦精品一区二区三区在线观看 | 日韩中文字幕在线亚洲一区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日韩一级精品视频在线观看| 成人免费福利片在线观看| 日韩av东京社区男人的天堂| 99热热久久| 国产伦精品一区三区视频| 日韩在线观看视频免费| 成人免费观看网欧美片| 一级毛片看真人在线视频| 国产成人啪精品视频免费软件| 九九精品久久久久久久久| 中文字幕一区二区三区 精品| 国产成人精品综合在线| 欧美激情在线精品video| 国产不卡在线观看| 中文字幕一区二区三区精彩视频| 精品在线观看一区| 91麻豆tv| 国产一区二区精品久| 天堂网中文在线| 欧美一级视频免费| 欧美a级成人淫片免费看| 日韩字幕在线| 久久精品大片| 国产一区免费观看| 国产视频在线免费观看| 四虎久久精品国产| 精品在线观看一区| 精品久久久久久综合网| 国产视频久久久久| 国产美女在线一区二区三区| 你懂的福利视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产91视频网| 九九干| 国产一区二区精品久久91| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 欧美日本免费| 免费一级片网站| 国产91素人搭讪系列天堂| 色综合久久天天综线观看| 国产欧美精品午夜在线播放| 日韩中文字幕在线播放| 久久国产影院| 日韩av成人| 一级毛片视频免费| 日本伦理黄色大片在线观看网站| 国产视频一区二区三区四区| 国产激情一区二区三区| 国产极品白嫩美女在线观看看| 高清一级毛片一本到免费观看| 国产麻豆精品视频| 久久国产一区二区| 一级片免费在线观看视频| 99色视频在线观看| 欧美激情一区二区三区视频高清| 欧美另类videosbestsex久久| 成人影院一区二区三区| 欧美爱爱动态| 国产一级生活片| 国产一区二区精品久久91| 亚洲第一页色| 免费一级片在线| 国产极品白嫩美女在线观看看| 国产成a人片在线观看视频| 国产精品自拍一区| 成人免费高清视频| 国产一区二区精品久久| 欧美a级片视频| 免费的黄色小视频| 国产麻豆精品高清在线播放| 亚洲天堂免费| 欧美a级片视频| 国产一区二区高清视频| 免费一级片在线| 日韩欧美一及在线播放| 欧美另类videosbestsex| 亚洲天堂在线播放| 91麻豆爱豆果冻天美星空| 精品视频一区二区| 一a一级片| 欧美另类videosbestsex视频 | 久久99青青久久99久久| 99热视热频这里只有精品| 国产91精品系列在线观看| 四虎影视库| 亚洲精品影院一区二区| 精品国产一区二区三区精东影业| 99热热久久| 国产伦精品一区二区三区无广告 | 国产麻豆精品视频| 欧美另类videosbestsex视频 | 999久久狠狠免费精品| 中文字幕一区二区三区 精品| 欧美一级视| 免费一级生活片| 成人影院久久久久久影院| 精品视频免费看| 999久久66久6只有精品| 91麻豆精品国产自产在线| 精品视频一区二区三区免费| 国产a免费观看| 免费一级生活片| 99久久精品国产片| 中文字幕一区二区三区 精品| 国产精品自拍亚洲| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 999久久狠狠免费精品| 四虎久久影院| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 二级片在线观看| 国产伦精品一区二区三区在线观看 | 美女免费精品视频在线观看| 高清一级淫片a级中文字幕 | 精品视频在线观看免费| 欧美1卡一卡二卡三新区| 午夜欧美成人久久久久久| 国产伦久视频免费观看视频| 成人影院一区二区三区| 日本在线不卡免费视频一区| 青青青草影院| 99久久精品费精品国产一区二区| 久久久久久久男人的天堂| 国产欧美精品午夜在线播放| 日本免费乱人伦在线观看 | 午夜家庭影院| 91麻豆精品国产片在线观看| 香蕉视频久久| 久久国产精品永久免费网站| 欧美国产日韩在线| 欧美另类videosbestsex| a级毛片免费全部播放| 欧美激情中文字幕一区二区| 国产伦精品一区二区三区无广告 | 国产美女在线观看| 久久99中文字幕| 国产精品自拍亚洲| 免费国产在线观看不卡| 成人av在线播放| 亚洲精品久久久中文字| 国产成人啪精品视频免费软件| 午夜家庭影院| 国产a视频| 免费毛片播放| 日韩av成人| 国产综合91天堂亚洲国产| 久久精品免视看国产明星| 欧美激情影院| 亚洲精品久久久中文字| 亚久久伊人精品青青草原2020| 高清一级片| 欧美另类videosbestsex高清| 色综合久久天天综合观看| 美女免费毛片| 99色吧| 欧美电影免费看大全| 日韩欧美一及在线播放| 成人免费一级毛片在线播放视频| 精品久久久久久中文| 国产成人精品综合在线| 韩国毛片 免费| 日韩在线观看视频免费| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 99热精品在线| 91麻豆精品国产自产在线观看一区 | 国产网站免费观看| 可以免费看毛片的网站| 久久99这里只有精品国产| 你懂的日韩| 欧美国产日韩精品| 国产一区二区高清视频| 国产成人精品综合| 91麻豆tv| 九九热精品免费观看| 日韩中文字幕在线播放|