2012-11-15 58 views
1

我有一個應用程序(除其他外)支持使用Lua模式進行純文本搜索和搜索。爲了方便起見,該應用程序支持不區分大小寫的搜索。這裏是一個圖像片段:使用LPeg製作Lua模式不區分大小寫

(

,其將所述給定的Lua圖案成不區分大小寫的Lua圖案的代碼不是太漂亮。它基本上擔心一個字符是否有一個奇數或偶數的轉義(%),以及它是否位於方括號內。圖中顯示的圖案變成%a[bB][bB]%%[cC][%abB%%cC]

我還沒有機會學習LPeg,我想這可能是我的動力。

我的問題是這是否LPeg可以輕鬆處理?

回答

3

是的,但爲了更方便地進入LPeg世界,考慮LPeg的「re」模塊,它爲您提供類似於正則表達式的語法,您可以指定一組規則,如在語法中(例如,Yacc等)。您基本上會爲轉義字符,括號組和常規字符編寫規則。然後,可以將函數與規則相關聯,這會發出與輸入相同的文本或不區分大小寫的修改版本。

你的規則的結構會自動處理偶數區分,支架上下文等。LPeg使用「有序選擇」,所以如果你先添加你的轉義規則,它將正確處理%[並且避免混合例如,它與括號規則一起使用。

+0

謝謝!我沒有考慮過使用RE,這使得它更容易:) – Stomp