|
TAKA です。
>>TEST1<ABC>TEST2<DEF>TEST3
>>ならどうなって欲しいのですか?
>>「DEF」と「TEST3」など。
>>
>>TEST1TEST2TEST3
>>ABCDEF
>>でしょうか?
>
>はい そうです。
ようやく、仕様が見えました。
でも、この仕様(ルビを次の行に集める)からいくと、
昔<いにしゑ>の
を処理した場合は、
昔の
いにしゑ
となり、最初の投稿と違う結果になりますよ。
^^^^^^^^^^^^^^^^^^^^^
#本当に、いいのかな?
最初の投稿は間違いであったという前提で、話をします。
^^^^^^^^^^^^^^^^^^^^^^^^^^
置換ダイアログで1発で処理するのは、おそらく無理だと思います。
マクロを使うしかないと思います。
2種類のやり方を思いつきました。
その1は要望と少し違います。その2は少し前提条件が入ります。
制限なしは、私には難しいので、パスします。
●その1
TEST1TEST2TEST3
ABCDEF
ではなく、
TEST1TEST2TEST3
ABC
DEF
となっても良いという前提。
// テストマクロ(ここから)
disabledraw;
while( 1 )
{
replaceallfast ".*\\f<\\f[^>]+\\f>\\f.*", "\\0\\4\\n\\2", regular;
if( !result ) break;
}
enabledraw;
endmacro;
// テストマクロ(ここまで)
●その2
TEST1TEST2TEST3
ABCDEF
でないとだめ。
但し、行頭に《、行末に》を使用しないという規約を作れる。
// テストマクロ(ここから)
disabledraw;
// 第一段階処理(《》付でルビを改行させながら次の行に持っていく)
while( 1 )
{
replaceallfast ".*\\f<\\f[^>]+\\f>\\f.*", "\\0\\4\\n《\\2》", regular;
if( !result ) break;
}
// 第二段階処理(不要な《》と改行を1つにまとめる)
while( 1 )
{
// ルビの間に空白行を入れる場合
// replaceallfast "^《.*\\f》\\n《\\f.*》\\n", "\\0 \\2", regular;
// ルビの間に空白行を入れない場合
replaceallfast "^《.*\\f》\\n《\\f.*》\\n", "\\0\\2", regular;
if( !result ) break;
}
// 第三段階処理(不要な《》を削除)
while( 1 )
{
replaceallfast "^《\\f.*\\f》\\f\\n", "\\1\\3", regular;
if( !result ) break;
}
enabledraw;
endmacro;
// テストマクロ(ここまで)
>あと、私は 秀丸の マクロなどは使ったことがございませんので
>ライブラリの入れ方など 教えていただけると たすかります
すでに、ドキュメント化されていますので、
http://win.blue.co.jp/~jr-kun/hidemaru_qa/hmindex3.html
を参照して下さい。
>置換でのやり方も お願いします。
今回は、置換ダイアログを使って処理するのは無理だと思います。
#少なくとも、私は思いつきませんでした。
ちなみに、<>で括られて部分を<>ごと削除するなら、
置換ダイアログ(検索→置換)で、置換元に
<[^>]+>
を入力、
置換後に
を入力(置換後の入力は何もない状態)、正規表現をONで可能で
す。
P.S.
具体例は、単純なパターンを1個ではなく、2、3個パターンを書
いた方が分かりやすいです。
また、具体例は間違わないようにお願いします。その通りに作って
も「ごめん。間違ってました。」というのは、あんまりですので。
最初の書き込みだけでは、コメントした全員が勘違いをしました。
(別に怒ってはいませんので、ご安心を)
次回からは、よろしくお願いします。ということです。
|
|