2009-06-08 4 views
1

私は改行のグループを軽減しようとするには、次の正規表現を持っている:正規表現が改行のグループを崩壊させないのはなぜですか?

s/(\n|\r\n|\n\r)(\n|\r\n|\n\r)(\n|\r\n|\n\r)+/\n\n/gmi; 

それはとして始まっ:私は最高に連続している改行の数を減らすために探しています

s/\n\n(\n)+/\n\n/gmi 

2行(ちょうど私が内部wikiのためにインポートしているいくつかのファイルをいくつかクリーンアップしようとしています)。 データには数行のCRLFが広がっています(Windowsデータファイル)。 しかし、動作していないようです。

私は間違っていますか?ここでは、それは間違って出て来ているサンプルです:それはこのように終わるので、私は、HTMLタグを除去しています

 
added missing options for Menu and toolbar positioning</p> 

</div> 

</body> 

</html> 

 
added missing options for Menu and toolbar positioning 





として

はオフに開始します正規表現を適用すると、次のようになります。

また、これらの改行の周りに残され、他の空白マッチング
+0

私の提案はhttp://stackoverflow.com/questions/965427/why-doesnt-my-regular-expression-collapse-groups-of-newlines/965569#965569でご覧になれます。実際に何が構成されているかを見ることができるように入出力します。 – ysth

答えて

6

試してみてください。

s/(\r?\n[ \t]*){2,}/\n\n/g; 
+0

私にそれを打ちなさい:P –

+1

代わりに{3、}を使ってみませんか? –

+0

これは6のセットを4のセットに減らします...なぜそれが2に減らされないのか分かりません。 – Daemonic

0

あなたはこのようなあなたの複数のグループを照合しようとしましたか?

(\r\n){2,}/\n\n 
1

あなたが与えられた答えを適用するトラブルを抱えているように見えるので、多分あなたは私たちにあなたはまた、任意の\ rを取り除く1つのパスを試してみたいことがあり

use Data::Dumper; 
$Data::Dumper::Useqq = 1; 
print Dumper $slurped_file; 

を使用して、実際のデータの一部を、示すことができます文字、そして元の改行のみの置換。

+0

は通りから始まり

 added missing options for Menu and toolbar positioning 
は、その後、私は正規表現を適用し、それがとして出てくる:なるほど
 added missing options for Menu and toolbar positioning 
Daemonic

+0

...プレのコメントではうまくいきません。元の質問に追加します。 – Daemonic

関連する問題