1

仮想ではない C++ ヘッダー ファイルのメソッド宣言に一致する正規表現を見つけようとしています。ほとんどの場合は機能していますが、仮想の後に改行があり、メソッド宣言が次の行にある場合、正規表現はそれに一致しますが、これは私が望んでいるものではありません。したがって、正規表現エンジンが前の行に戻って仮想キーワードをチェックする必要があります。基本的な例を次に示します。

ソース ファイル スニペット:

void Process(char* name, int val); // Should match, this one works
virtual char* GetName(); // Should not match since it is virtual, this one works
virtual
        flag_type SetValue(uint8 resourceIndex, char* name); // Should not match, but this line matches since virtual is on previous line!

そして、ここに私の正規表現があります: (^\s*\w+\**(?<!virtual)\s+\w+\s*\()(\s*\w+\**\s+\**\w+,?)*\s*\)\s*;

4

1 に答える 1

0

エマヌエーレによって指摘された欠陥を含めて、私にとってうまくいくものを見つけました(コメントされた行内でも一致しますが):\b(?<!virtual\s+)\w+\**\s+\w+\s*\((\s*\w+\**\s+\**\w+,?)*\s*\)\s*;

于 2012-04-30T21:46:50.790 に答える