2

私は(とりわけ)プレーンテキスト検索とLuaパターンを使用した検索をサポートするアプリを持っています。便利なように、アプリは大文字と小文字を区別しない検索をサポートしています。画像スニペットは次のとおりです。

((

与えられたLuaパターンを大文字と小文字を区別しないLuaパターンに変換するコードはあまりきれいではありません。基本的に、文字の前に奇数または偶数のエスケープ(%)が付いているかどうか、および角かっこ内にあるかどうかが心配です。画像に示されているパターンは次のようになります%a[bB][bB]%%[cC][%abB%%cC]

私はまだLPegを学ぶ機会がありませんでした、そしてこれが私の動機であるかもしれないと思います。

私の質問は、これがLPegで簡単に処理できたものかどうかです。

4

1 に答える 1

5

はい。ただし、LPegの世界に簡単に入るには、LPegの「re」モジュールを検討してください。このモジュールは、正規表現のような構文を提供し、文法のように一連のルールを指定できます(Yaccなどを考えてください)。基本的に、エスケープ文字、ブラケットグループ、および通常の文字のルールを記述します。次に、関数をルールに関連付けることができます。これにより、入力として使用したのと同じテキスト、または大文字と小文字を区別しない変更バージョンのいずれかが出力されます。

ルールの構造は、偶数と奇数の区別、ブラケットコンテキストなどを自動的に処理します。LPegは「順序付き選択」を使用するため、最初にエスケープルールを追加すると、%[が正しく処理され、たとえば、ブラケットルール。

于 2012-11-16T14:51:54.850 に答える