正規表現検索の目的は、C++ヘッダーファイルからすべてのテンプレートクラスインスタンスを判別することです。クラスインスタンスは、次のように形式化できます。
CMyClass<int> myClassInstance;
CMyClass2<
int,
int
> myClass2Instacen;
検索は、ファイル全体を文字列にロードすることによって実行されます。
open(FILE, $file);
$string = join('',<FILE>);
close(FILE);
また、クラスインスタンスが文字列内の複数の行にまたがっている場合でも、次の正規表現を使用してクラスインスタンスを決定します。
$search_string = "\s*\w[^typename].*<(\s*\w\s*,?\n?)*)>\s*\w+.*";
$string =~ m/$search_string/;
問題は、ファイルにさらに多くのクラスインスタンスが存在する場合でも、検索で1つのヒットしか返されないことです。
正規表現の後方参照変数の1つからこのアプローチを使用して、すべてのヒットを取得することは可能ですか?