2009-05-13 5 views
4

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

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

を、同等の正規表現を書いて他の多くの方法はもちろんありますまたはその文字の組み合わせを必要としない同等のコマンド。 –

+0

@Reb Kennedy:あなたは正しいですが、コメントの中に収まるように機能を変更するのは愚かなようです。 – Whatsit

+0

この質問をお寄せいただきありがとうございます。受け入れられた答えは本当の目玉です。 – Cyberherbalist

答えて

24

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

あなたはの#ifブロック内のすべてをラップすることができます:

#if 0 
whatever you want can go here, comments or not 
#endif 
+0

かなり卑劣なこと! :-) – mquander

+1

これはこのようなプリプロセッサコマンドの乱用のようですが、その作業は完了します。 – Whatsit

+6

それは領土が付属しています。 Cが虐待された。 –

10

いいえ:

は、ここで問題の原因コメントの一種の一例です!ありません。

+1

時には単純な答えは最高です – JaredPar

2

を一般的なケースでは、あなたがすることができません。

ここで、この場合に動作するように起こるトリッキーな答えがあります:

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

これは(またはあるべき、私は実際にperlのコマンドをテストしていない)ので、オリジナルと同じマッチする正規表現をx修飾子は、式の明快さのために空白を使用できるようにします。*/から分離することができます。

もっと多くの空白を使用することができます。コメントブロックトークンの最後を区切る1つのスペースだけが含まれています。

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

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

をオンにすることができます。もちろん、上記の断片のファンキーな色分けによって示されているように、残りのツールは、あなたが何をしているのか分からず、間違った推測をするでしょう。

3

問題の原因となる文字列が含まれないように正規表現を調整することで、問題を解決することができます。何をやっているのルックスから、これは(*非貪欲にする)動作するはず必要があります。あなたのperlの正規表現の

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

このCの質問はJAPHセッションに変わりますか? ;-) – RBerteig

+0

+1もう1つの賢いperl解決策です。 – RBerteig

0

この特定のケースでは、あなたができるchange the delimiterを。任意の英数字以外の空白区切り文字を使用できます。ここで私は#に切り替え:

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

一般的な選択肢は#%です。彼らはペアに一致することが期待されているので、括弧または中括弧のような「文字をブラケティング」

は、少し異なる構文を取得:この特定の例では

/** 
* perl -pe 's[(?<=.{6}).*][]g' : Limit to PID 
*/ 
関連する問題