2013年5月8日 星期三

Emeditor使用Regex提升搜尋效率

這是一段原始碼:

init : function() { //初始年曆參數
    space = ((year-1)+parseInt((year-1)/4)-parseInt((year-1)/100)+parseInt((year-1)/400)+1)%7;
    for(m=1;m<=12;m++) {
        if(m==4||m==6||m==9||m==11)
            month=30;
        else if(m==2&&(year-1980)%4==0)
            month=29;
        else if(m==2)
            month=28;
        else
            month=31;
        document.getElementById("show").innerHTML += "\nMonth: " + m + "\n" + this.showmonth(space,month);
        space=(space+month)%7;
    }
}

在撰寫程式的時候修改總是難免的,在進行修改的時候找尋修改的對象是一定會遇到的過程,當程式不長的時候我們還能土法煉鋼的找到想要找的目標,但是當程式開始變長的時候呢? 在說到搜尋的方法之前,先來了解一下本篇文章提到的正規表示法吧,正規表示法其實是程式在做字串比對常使用到的一個表示方法,它能讓我們定義一個字串的形式,例如電子郵件信箱的格式:

[a-zA-Z0-9]+\@[a-zA-Z0-9\.]+

這個範例是在規定@前面是英數,後面是英數及點,而利用這樣的表示式我們就能進行字串比對的工作。那麼回到本文的重點,其實Emeditor的搜尋就有支援讓使用者使用正規表示的方法搜尋,例如我要在本文一開始放上的原始碼同時找尋month及year兩個變數的關係,你會發現一般我們需要對這兩個變數各自搜尋,但是當我們程式碼一多的時候很有可能要多次的來回搜尋,這時候我們就可以利用剛剛學到的正規表示式的方法來進行搜尋,首先將Emeditor搜尋選項中的使用正規表現打勾,然後在搜尋條件貼上下面表示式:

(\smonth|year)

此範例為搜尋\smonth或year的字串格式,其中\s為空格的意思,由於搜尋month會得到month、Month、showmonth,所以加上一個空格避免搜尋到錯誤的目標,其搜尋結果如下圖:



看完了範例以後,有沒有覺得正規表示式真的超好用的呢? 趕緊好好學習正規表示法來小試身手吧!!

關鍵字:Emeditor、Search、Regex、Regular Expression
張貼留言