2010-12-13 13 views
0

私は制御されたスクリプトの状況でpreg-replaceでunnessaryコメントを削除しようとしていますが、正規表現が正しくありません。誰でも私の正規表現で何が問題なの? (私は前にApache/2.0.54 & PHP/5.2.9PHP関数preg_replace regexが動作しない、構文の質問

を持っている:

// Bla Bli Blue Blow Bell Billy Bow Bye 
script var etc(); // cangaroo cognac codified cilly celine cocktail couplet 
script http://blaa.org // you get the idea! 

後:

script var etc(); 
script http://blaa.org 

問題:どのような正規表現を使用する

# when comment starts on a new line, delete this entire line 
# find [a new line] [//] [space or no space] [comment] 
$buffer = preg_replace('??', '??', $buffer); 

# when comment is halfway in script ( // comment) 
# find [not beginning of a line] [1 TAB] [//] [1 space again] [comment] 
$buffer = preg_replace('??', '??', $buffer); 

?すべてとすべての提案は、私は、この謎を解決するために近づいてくれるので、私には+1を評価されます

+1

正規表現の代わりに適切なトークナイザを使用したことはありますか?コメントトークンだけをスローすることができます。 – cdhowie

+1

複数行コメントはどうですか?特にネストされた複数行のコメント?これはあまりにも些細な正規表現ではありませんが、トークナイザにとっては些細なことです。/ *これは/ *ネストされたコメントです*/ –

+0

コメントを一貫して書くことは、このような奇妙なことのためのスペースがないことを意味します。それにもかかわらず、そのような一貫性のある講義は非常に能力のないプログラマーの口から来ているというのは皮肉なことです。 – Sam

答えて

1

この正規表現を試してみてください:

/(?<!http:)\/\/[^\r\n]*/ 

のような文字列を検討し、しかし注意してください:

<!-- 
// not a comment --> 

または

/* 
// not a comment */ 

var s = "also // not // a // comment"; 

をとhttps://...ftp://...などを処理したいかもしれません。

+0

#BEAUTIFULL !!!!コメントにコメントが付いたこれらの奇妙な状況がないと、よりクリーンなコードのためのスペースが与えられます。あなたの正規表現は、箱からすぐに始まりました!あなたは素晴らしい週末バートを祈っています! – Sam

+0

@Sam、よろしくお願いします。週末?それはさらに数日かかるでしょうが、ありがとうとあなたも良い一日を! :) –