[ 新規に投稿する ]

キーワードの1行上での改行方法No.08565
こうき さん 17/09/23 06:24 [ コメントを投稿する ]
  教えて下さい!
ネットで入手したあるブログのコメント欄をコピペし、つめ太郎さんのマクロで空白行を取り除いてから、秀丸パブリッシャーでA4用紙2段組み印刷したものをタテ折りにしたものいつも電車の中で読んでいます。

・・・
ナントカカントカナントカカントカナントカ
ナントカカントカナントカカントカナントカ
サマザマナニックネーム
2017年ナニガシ
ナントカカントカナントカカントカナントカ
ナントカカントカナントカカントカナントカ
・・・

このようなテキストを読み易くするために、行頭キーワード2017年で改行させるには
^2017年 → \n2017年
で「正規表現」置換すれば済む訳ですが、

・・・
ナントカカントカナントカカントカナントカ
ナントカカントカナントカカントカナントカ

サマザマナニックネーム
2017年ナニガシ
ナントカカントカナントカカントカナントカ
ナントカカントカナントカカントカナントカ
・・・

のようにその行頭キーワードの1行上で改行させるような置換はできないでしょうか?よろしくお願い致します。
[ ]
RE:08565 キーワードの1行上での改行方法No.08566
でるもんたいいじま さん 17/09/23 07:52 [ コメントを投稿する ]
  こんにちは。秀丸愛用者の「でるもんた・いいじま」です。

> ナントカカントカナントカカントカナントカ
> サマザマナニックネーム
> 2017年ナニガシ
> ナントカカントカナントカカントカナントカ
> ナントカカントカナントカカントカナントカ
> ・・・

> このようなテキストを読み易くするために、
> 行頭キーワード2017年で改行させるには
> ^2017年 → \n2017年
> で「正規表現」置換すれば済む訳ですが、
...
> のようにその行頭キーワードの1行上で改行させるような
> 置換はできないでしょうか?

ちょっと手元で試してみました。

^.+\n2017年 → \n\0
でいけるようです。
.+ と書いた場合、デフォルトでは改行にはヒットしません。

ちなみに、2017年以外の記事でも大丈夫なようにするには、
^.+\n\d+年 → \n\0
としてください。\d は [0-9] と同義です。

ちなみに蛇足ですが、上記の方法は正規表現のDLLが古い場合には
うまく動作しない可能性があります。もしうまくいかない場合は、
置換のダイアログで「HMJRE.DLL V5.01」のように表示されている
部分をチェックしてください。上記の「V5.01」が現在の最新です。
[ ]
(発言者削除)No.08567
でるもんたいいじま さん 17/09/23 08:05
 
[ ]
RE:08566 キーワードの1行上での改行方法No.08568
でるもんたいいじま さん 17/09/23 08:08 [ コメントを投稿する ]
  でるもんた・いいじまです。追記です。

>> このようなテキストを読み易くするために、
>> 行頭キーワード2017年で改行させるには
>> ^2017年 → \n2017年
>> で「正規表現」置換すれば済む訳ですが、
> ...
>> のようにその行頭キーワードの1行上で改行させるような
>> 置換はできないでしょうか?

> ちょっと手元で試してみました。

> ^.+\n2017年 → \n\0
> でいけるようです。
> .+ と書いた場合、デフォルトでは改行にはヒットしません。

> ちなみに、2017年以外の記事でも大丈夫なようにするには、
> ^.+\n\d+年 → \n\0
> としてください。\d は [0-9] と同義です。

すみません追記。
当然ですが、この正規表現だと、本文の頭に「2017年には…」などと
書いてある部分にもヒットしてしまいます。それがたまに発生する
程度なら手作業で修正してもいいと思いますが、頻発するようなら、
^.+\n\d+年\d+月\d+日 → \n\0
とか
^.+\n\d+年\d+月\d+日 \d+:\d+:\d+ → \n\0
とかいろいろ工夫してみてください。

あと、これだけ長くなる場合には、この置換自体をマクロにして
しまったほうがいいと思います。こんな感じですかね。

setcompatiblemode 0x20000;
begingroupundo;
replaceallfast "^.+\\n\\d+年\\d+月\\d+日", "\\n\\0", regular;
endgroupundo;

ちなみに、最近のバージョンなら @"..." という記法が使えます
ので、上記の3行目は
replaceallfast @"^.+\n\d+年\d+月\d+日", @"\n\0", regular;
とも書けます。古いバージョンの秀丸を気にしなくていいなら、
この @"..." を使ったほうが見通しがよくなると思います。
[ ]

[ 新規に投稿する ]