0

パターン解釈とルール生成システムが必要です。基本的にどのように機能するかというと、テキストを解析してそこからパターンを解釈し、それらの解釈に基づいて一連のルールを出力する必要があります。ここに例があります。次のようなHTTPヘッダーがあるとしましょう

GET https://website.com/api/1.0/download/8hqcdzt9oaq8llapjai1bpp2q27p14ah/2139379149 HTTP/1.1
Host: website.com
User-Agent: net.me.me/2.7.1;OS/iOS-5.0.1;Apple/iPad 2 (GSM)
Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate

パーサーはこれを実行して出力します

req-hdr-pattern: "^GET[ ].*/api/1\\.0/download/{STRING:auth_token}/{STRING:id}[].*website\\.com"

上記のルールには、正規表現の修正版が含まれています。STRING:auth_token や STRING:id などの各変数が抽出されます。

テキスト(この場合はヘッダー)を解析するには、「ダウンロード」の後に来るものを抽出する必要があることをパーサーに伝える必要があります。したがって、基本的には、このパーサーがテキストを解析して最終的なルールを出力するために使用する一連のルールの定義があります。

問題は、Python でパターン マッチング、検出、生成に役立つモジュールが利用できるかどうかです。これは、コンパイラのパーサー部分のようなものです。自分で作ろうとする前に聞いておきたかった. 助けはありますか?

4

3 に答える 3

1

これはすでに回答されていると思います:

パーサー生成

Python パーサー モジュールのチュートリアル

pyparsing モジュールを使用すると、必要なものが簡単になることを保証できます。

于 2012-09-14T13:32:26.180 に答える
0

これがあなたが探しているものではない場合は申し訳ありませんが、少し急いでいます. Python の re モジュール ドキュメントには、トークナイザーの記述に関するセクションが含まれています。
十分に文書化されていませんが、何かを実行可能にするのに役立つかもしれません。
自分でトークン化するよりは確かに簡単ですが、求めているような柔軟性は得られないかもしれません。

于 2012-09-14T14:12:31.677 に答える
0

あなたはこれを自分でやるのが一番です。それは大した仕事ではありません。

おっしゃる通り、正規表現をルールとして定義する必要があります。次に、プログラムは一致する正規表現を見つけ、一致を出力ルールに変換します。

**編集**これを行うライブラリはないと思います。私の理解が正しければ、次のような一連のルールを指定する必要があります。

ダウンロード後に抽出

そして、これは次のようなテキストを出力します:

req-hdr-pattern: "^GET[ ].*/api/1\\.0/download/{STRING:auth_token}/{STRING:id}[].*website\\.com"

このためには、ルールを解析するパーサーを作成する必要があります。ルール構文の複雑さに応じて、pyparse を使用するか、正規表現を使用するか、手動で行うことができます。私の経験則では、構文が再帰的 (つまり、html のようなもの) である場合は、pyparsing を使用するのが理にかなっており、そうでない場合は価値がありません。

これらの解析されたルールから、プログラムは入力テキストと一致する新しい正規表現を作成する必要があります。基本的に、プログラムは規則を正規表現に変換します。

一致するこれらの正規表現を使用して、入力テキストからデータを抽出します。

于 2012-09-14T13:37:24.993 に答える