正規表現を使用して、文字列から C および C++ スタイルのコメントを削除しようとしています。私は両方を行うと思われるPerl用のものを見つけました:
s#/\*[^*]*\*+([^/*][^*]*\*+)*/|//([^\\]|[^\n][\n]?)*?\n|("(\\.|[^"\\])*"|'(\\.|[^'\\])*'|.[^/"'\\]*)#defined $3 ? $3 : ""#gse;
しかし、これをboost::regex
コード ブロックで使用する方法や、boost::regex
.
参考までに: ここで正規表現を見つけました: perlfaq6で、必要なすべてのケースをカバーしているようです。
boost::spirit::qi
プロジェクトのコンパイルに多大な時間がかかるため、これを使用しないことをお勧めします。
編集:
std::string input = "hello /* world */ world";
boost::regex reg("(/\\*([^*]|(\\*+[^*/]))*\\*+/)|(//.*)");
input = boost::regex_replace(input, reg, "");
したがって、短い正規表現は実際に機能しますが、長い正規表現は機能しません。