资讯专栏INFORMATION COLUMN

一個簡易正則引擎

cheng10 / 3127人阅读

摘要:還沒實現目前通行的正則語法,但已實現它的等價形式,下一步只需支持自動編譯即可。克萊尼代數中的三種算選擇順序重複,分別對應的,子,引用到父的子。

還沒實現目前通行的正則語法,但已實現它的等價形式,下一步只需支持自動編譯即可。

克萊尼代數中的三種運算:選擇、順序、重複,分別對應 Object 的 key,子 Object,引用到父 Object 的子 Object。

var r = {}, a = {b: {b: ""}}; 
    a.a = a; // a*bb
    r.a = a; // aa*bb

var c = {c: {c: {c: {"": "", c: {"": "", c: ""}}}}}; // c{3,5}

var l = {l: {i: {l: {y: ""}}, a: {d: {y: ""}}}}; // lily|lady

function test(s, r) {
    for (var i in s) {
        var j = s[i];

        if (typeof r[j] !== "undefined")
            r = r[j];
        else
            return false; 
    }

    if (r === "")
        return true;

    if (r[""] === "")
        return true;

    return false;
}

console.log(test("aaaabb", r), test("bb", r), test("aaaa", r));
console.log(test("aaaabb", a), test("bb", a), test("aaaa", a));

console.log(test("cc", c), test("ccc", c), test("cccc", c), test("ccccc", c), test("cccccc", c));

console.log(test("lily", l), test("lady", l), test("ladysmith", l), test("lad", l));

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/85397.html

相关文章

  • 一個簡易網頁版 Javascript 編輯器

    摘要:一共只有行代碼,無任何依賴。包括了代碼編輯器最基本的功能代碼高亮和智能縮進。下一步計劃支持編輯區的局部更新。 一共只有 200 行代碼,無任何依賴。 包括了代碼編輯器最基本的功能:代碼高亮和智能縮進。 源代碼見編輯器默認文檔(或右鍵查看頁面源代碼): https://bumfo.github.io/high.html 項目地址: https://github.com/bumf...

    jiekechoo 评论0 收藏0
  • [譯] Houdini: 你還沒聽說!這可能是 CSS 下一件最令人興奮的大事

    摘要:接下來我們將會更具體的說明是什麼東西和這傢伙會怎麼解決這些問題,並且列出目前開發中一些令人興奮的功能。這個功能甚至還沒有一個瀏覽器支援。完整的清單請查閱目前還未被寫入規範,意思是這邊提到任何內容極有可能會改變。 譯者:其實...我想說這可能是最令我感到興奮..但又害怕頭痛的功能... 附上原文連結 你曾經想要使用某個 CSS 的新功能,但是最後卻因為這個功能瀏覽器還未全面支援而放棄了嗎...

    bergwhite 评论0 收藏0
  • [譯 + 更新] 參透 Node 中 exports 的 7 種設計模式

    摘要:現在,我們可以開始探討介面的設計模式了。匯出命名空間一個簡單且常用的設計模式就是匯出一個包含數個屬性的物件,這些屬性具體的內容主要是函式,但並不限於函式。如此,我們就能夠透過匯入該模組來取得這個命名空間下一系列相關的功能。 前言 這篇文章試著要整理,翻譯Export This: Interface Design Patterns for Node.js Modules這篇非常值得一讀的...

    wmui 评论0 收藏0
  • Serverless! 使用 AWS 開發 Slack Slash Commands

    摘要:本文介紹如何使用搭建一個不需要伺服器的環境,提供查詢豆瓣電影。在輸入絕地救援,會顯示相關的電影資料。特別感謝寫的文章本文同步分享於 showImg(https://segmentfault.com/img/bVr8li); 本文介紹如何使用 AWS Lambda & AWS API Gateway 搭建一個不需要伺服器的環境,提供 Slack Slash Commands 查詢豆瓣電影...

    warnerwu 评论0 收藏0
  • [譯] CSS 載入機制的未來趨勢

    摘要:載入流程被限制在兩個階段根據上面的模式,內嵌透過隱藏尚未套用樣式的內容,然後非同步得載入之後呈現內容。樣式表本身的載入機制是平行的,但是套用樣式卻是要照順序的。我們需要一點小技巧來避免。 這週閱讀到這篇有意思的文章,於是便動手寫下簡單的翻譯,如果有理解錯誤的地方歡迎指教。 Chrome 正在試圖改變當 寫在 的行為,從blink-dev 的文章並不能很清楚的知道其優點。所以這篇文章...

    Astrian 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<