- ベストアンサー
3回以上の改行を2回にする正規表現は?
タイトルどおり3回以上改行が続けば、2回にまとめる正規表現を考えています。 処理系は秀丸を使っています。 [第1案] 検索:\n\n+ 置換:\n\n [第2案] 検索:\n{2,} 置換:\n\n の2つを考えたがいずれも失敗。 他の言語でも汎用的に使えるように正規表現を希望ですがマクロでも可。 秀丸に限らず他のソフトでの解もありますね。 かなり頻繁に使うので何とか自動化したいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
複数の空白行を1行にまとめるマクロです。 gofiletop; while (1) { searchdown "^\\n\\n", regular; if (!result) break; down; beginsel; while (code == '\r') { down; } delete; }
その他の回答 (2)
- zap35
- ベストアンサー率44% (1383/3079)
#1です $は正規表現では行末を意味していますね。すみません。@で試してみてください。 これは動作しました
お礼
ああ、やっぱり$は一時的な記号だったんですね。 ただ、この方法だと$とか@が含まれるデータは誤動作の恐れがあるので変換前にチェックが必要では?と思いました。でも、手作業に比べれば楽ですね。
- zap35
- ベストアンサー率44% (1383/3079)
秀丸ヘルプに下記記載があります >\n自体を任意の回数繰り返すような正規表現は、期待通りに動作しないことがあります。 >もし「$」で置き換え可能な場合にはなるべく「$」を使うようにしてください。 美しくない方法ですが 置換 \n → $ ${4,} → $$$ $ → \n とすれば、3行以上連続する空行を2行にできます。
お礼
回答ありがとうございます。 なるほどhelpに書いてありました。すみません。 道理で幾ら探してもサンプル例が無いハズです。 対策として\nの代わりの文字として$を使い、ご指定の置換を3回行えば良いと解釈すれば良いでしょうか? \n→$は出来ましたが、${4,}→$$$でエラーが出るようですが、何か間違ってますか? 手作業で成功すればマクロ化できそうです。 解決の手掛かりを頂いた気がします。ありがとうございます。 なお、引き続き出来れば一遍で処理できる方法をお待ちしております。
お礼
ああ、これを待っていました。 このマクロなら特定文字がデータで使えなくなる事も無いしマクロを呼び出せば簡単に処理できます。 目的が達せたので締め切りたいと思います。 皆様ありがとうございました。