Google Search

自訂搜尋

2010年12月16日 星期四

[Misc] Regular Expression

近來公司內對客戶提供的訂單有很多e化的需求,需要和公司內部ERP作整合。但問題是很多客戶IT能力很弱,並沒有能力作真正的B2B,也就是他們只能提供人可以看得懂的檔案(至少不是傳真,還有時檔案),這時要和內部系統整合就困難了,因為將EXCEL或PDF轉成文字格式沒問題,問題再如何解讀裡的內容呢?

如果內容有一定的規則,寫程式是可以解讀,問題是規則常常會改變,一天到晚改程式也不是辦法? 因此想先看看Regular Expression 有沒有機會幫上忙?

下面是從以下網頁得到的說明:
======================================
Regular Expression (簡稱 regexp 或 RE) 是什麼? 有人直譯為「常規表示式」。 它的功能是協助我們搜尋字串, 甚至對檔案內的特定字串做全面性的代換。 一般簡單的文字檔案編輯器 (例如 MS Windows 下的記事本) 並不支援 regular expression , 所以我們在搜尋或代換字串時, 這些編輯器往往無法抓住我們的意思, 不是太寬鬆 (例如想找 port, 卻連 important 也找出來) 就是太嚴格 (例如想找 color, 卻遺漏了 colour)。 雖然大部分編輯器提供忽略大小寫等選項, 但所能解決的問題還是相當有限, 像上述兩個簡單的例子都沒有辦法解決。 如果改用 regexp, 則甚至可以處理諸如 "一份 html 檔裡面所有的 hyperlinks" 這類的複雜搜尋條件。
具體地說, 我們在想要搜尋的字串當中夾雜一些特殊符號, 指示電腦以較嚴格或較寬鬆的條件去搜尋, 這樣的字串就叫做 regexp。 例如要找 modem 或 Modem, 我們可以用 [Mm]odem 這個 regexp 來表示。 這裡的方括弧就是 regexp 語法中的特殊符號之一, 代表裡面任何一個字元放在這一個位置都可以 (但總歸要是一個字元)。
========================================

看來重點再用一個指令就可以執行很複雜的文字搜尋和取代的工作。記得剛進資訊領域學過unix的awk,應該就是這類型的工具。另外像perl也是類似的工具。仔細去看不同的工具,就是搭配一些複雜的參數,幾乎所有想到處理字串的功能都可以兜出來。

但回到現在公司的系統現況,上面提的工具大概很難跟現有的開發工具整合(vb&asp&oracle)。Oracle倒是提供了一些工具,連結上的是Oracle提供的Function,基本尚以使用來講可以直接崁在SQL裡面。和現有程式作整合是比較有可能啦!

接下來就是要再花點時間研究研究,希望結果可以開發出一個讓使用者可以自行設定的工具,好去應付客戶端格式多變的訂單。


沒有留言: