正規表現を使用して .h ファイルから .cpp ファイルを生成し、正規表現を使用して結果を戻り値の型と関数の 2 つに分割する perl スクリプトを作成しています。
ほとんど機能する戻り値の型を見つけるための正規表現を作成しました。
^(\s*&?\w*\s*(\<{1}.*\>{1})*\s)
編集:正規表現文字列をより適切に機能するものに更新しましたが、この質問に関する限り変更はありません。
これは、次のようなほとんどの cpp プロトタイプで機能します。
int funky();
int funky(int something);
&int funky(int something);
&int <vector *> funky();
これらの場合、正規表現が一致します
int
int
&int
&int <vector *>
これは完璧ですが、関数の引数内に一致する文字列がある場合は次のようになります。
int <vector> funky(int <vector> i);
int <vector> funky(int <vector *> i);
int <vector> funky(const int <vector> i);
正規表現が一致します
int <vector> funky(int <vector>
int <vector> funky(int <vector *>
int <vector> funky(const int <vector>
返してほしいとき
int <vector>
int <vector>
int <vector>
そして、最初の閉じ括弧 '>' の終わりを超えてホエーが続いていることがわかりません. 私は正規表現が初めてで、これを理解できません。
申し訳ありませんが、これには答えがあります。検索しても見つかりませんでした。おそらく、どの用語を探すべきかさえわからないためです:(。
Edit2: この質問が予想よりも複雑である場合、最初の <.*> を超えて続く理由を誰かが説明できますか? なぜこれが機能しないのかわかりません。