コメント内で発生する場合にのみ、大きなコードベース内で単語の接尾辞を検索して置換する(しようとする)タスクがあります。コメントはすべて/*または//タイプですが、考えられるほとんどのエッジケースが含まれることが保証されています。
だから私はこれを変更したい:
/* blah blah something__suffix blah */
これに:
/* blah blah something blah */
しかし、私もこれを変更したいと思います:
// blah blah something__suffix blah
これに:
// blah blah something blah
この:
/*
* blah blah something__suffix blah
*/
これに:
/*
* blah blah something blah
*/
この:
/**
// blah blah something__suffix blah
*/
これに:
/**
// blah blah something blah
*/
ad nauseam(文字通り)。
当初、これはパーサータスクであると感じ、cochinelleをインストールしました。実際、コメントを解析できましたが、プリプロセッサマクロでスタックし、これを1回限りのタスクとして実行する人にとっては回避策が複雑に見えました。だから今、私は正規表現を考えています。
本当に堅牢な検索を実行し、CおよびC ++コメント内を正規表現に置き換えることについて多くのアドバイスを見つけていません(「パーサーが必要」以外)が、かなりよくテストされたperlがあるように見えることに気づきましたこれらの両方のスタイルのコメントを削除するためのperlFAQのスクリプトはここにあります。
次のように:
$/ = undef;
$_ = <>;
s#/\*[^*]*\*+([^/*][^*]*\*+)*/|//([^\\]|[^\n][\n]?)*?\n|("(\\.|[^"\\])*"|'(\\.|[^'\\])*'|.[^/"'\\]*)#defined $3 ? $3 : ""#gse;
print;
私の質問:コメントを削除する代わりに、コメントとして識別されたテキストでサフィックスを検索し、サフィックスを削除して残りのコメントをそのままにしておくことができるように、このスクリプトをどのように適合させるのですか?