2

列挙型、typedef、関数プロトタイプがたくさん含まれているCヘッダーファイルがあります。Python正規表現(re)を使用してこのデータを抽出したいと思います。構文を学ぶたびに忘れてしまうので、構文については本当に助けが必要です。

ENUMS
-----
enum
{
(tab character)(stuff to be extracted - multiple lines)
};

TYPES
-----
typedef struct (extract1) (extract2)


FUNCTIONS
---------
(return type)
(name)
(
(tab character)(arguments - multiple lines)
);

誰かが私を正しい方向に向けることができれば、私は感謝するでしょう。

4

1 に答える 1

4

このようなものがあなたが求めているものだと思いますか?

>>> re.findall('enum\s*{\s*([^}]*)};', 'enum {A,B,C};')
['A,B,C']
>>> re.findall("typedef\s+struct\s+(\w+)\s+(\w+);", "typedef struct blah blah;")
[('blah', 'blah')]

もちろん、構文にはさまざまなバリエーションがあり、関数ははるかに複雑なので、率直に言って、これらの正規表現はすでに壊れやすく、十分にエレガントではないので、それらを残しておきます。これが堅牢性がまったく重要ではなく、入力の形式を確認できる1回限りのプロジェクトでない限り、実際のパーサーを使用することをお勧めします。

于 2012-06-04T04:40:52.257 に答える