4

C スタイルのブロック コメントに */ を含める方法はありますか? この場合、ブロック コメントを一連の行コメント (//) に変更することはできません。

問題を引き起こすコメントの種類の例を次に示します。

/**
 * perl -pe 's/(?<=.{6}).*//g' : Limit to PID
 */
4

5 に答える 5

24

通常、コメントはリテラルである必要はないので、あまり頻繁には出てきません。

#if ブロックですべてをラップできます。

#if 0
whatever you want can go here, comments or not
#endif
于 2009-05-13T21:18:07.487 に答える
10

いいえ!ありません。

于 2009-05-13T21:16:59.890 に答える
3

問題のある文字列を含めないように正規表現を変更することで、問題を回避できます。あなたがしていることの外観から、これはうまくいくはずです(*を貪欲にしないでください):

/**
 * perl -pe 's/(?<=.{6}).*?//g' : Limit to PID
 */
于 2009-05-13T21:29:53.287 に答える
2

一般的な場合、できません。

この場合にうまくいくトリッキーな答えは次のとおりです。

/**
 * perl -pe 's/(?<=.{6}).* //gx' : Limit to PID
 */

これは (または実際に perl コマンドをテストしていないはずです)、オリジナルと同じ正規表現に一致します。これは、 x 修飾子を使用すると、式を明確にするために空白を使用できるため、*を から分離できるため/です。

もっと多くの空白を使用できます。ここでは、コメント ブロック トークンの末尾を区切る単一のスペースだけを含めました。

一部のコンパイラは、ネストされたコメントを許可する非標準機能を有効にするオプションをサポートしています。これは通常は悪い考えですが、この特定のケースでは、次のこともできます

/** 
 * /* perl -pe 's/(?<=.{6}).*//g' : Limit to PID
 */

このソース ファイルに対してのみそのオプションをオンにします。もちろん、上記のフラグメントのファンキーなカラーリングが示すように、残りのツールはユーザーが何をしようとしているのかを認識できず、誤った推測を行う可能性があります。

于 2009-05-13T21:28:51.790 に答える
0

この特定のケースでは、perl正規表現の区切り文字を変更できます。非英数字、非空白の区切り文字を使用できます。ここで私はに切り替えました#

/** 
 * perl -pe 's#(?<=.{6}).*##g' : Limit to PID
 */

#一般的な選択肢はとです%

括弧や中括弧のような「ブラケット文字」は、一致するペアであることが期待されるため、構文が少し異なります。

/** 
 * perl -pe 's[(?<=.{6}).*][]g' : Limit to PID
 */
于 2009-05-14T17:00:14.173 に答える