[ 新規に投稿する ]

文字列から文字列までを削除したいNo.38645
nobu1 さん 21/01/12 07:10 [ コメントを投稿する ]
  マクロを使用して、文字列から文字列までを削除したいです。複数のファイルで行うため、マクロでの書き方を教えてほしいです。

ファイルに、

<p><a href="

#いろいろな文章#

広告"></a></p>

があったとします。
「<p><a href="」から「広告"></a></p>」を指定することで、その間の文章を全部削除できるようにしたいです。同時に、「<p><a href="」「広告"></a></p>」も削除できると、ありがたい。

1行ではなく、複数行にまたがる #いろいろな文章# を削除したいです。
削除ではなく、別の文字列に置換できるとさらに、ありがたい。

「<p><a href="」から「広告"></a></p>」までの文字列が、1ファイルに複数個あった場合、全部処理できるとありがたい。

置換で不要な文字列を消す方法(正規表現) のページを見たけど、マクロで実行したいのでマクロでの書き方を知りたい。

よろしくお願いします。




[ ]
RE:38645 文字列から文字列までを削除したいNo.38647
秀丸担当 さん 21/01/12 10:20 [ コメントを投稿する ]
 
まず、一連の操作を繰り返したりするのは、キー操作の記録と再生を使うと簡単です。
以下のようにして操作を記録できます。

1.キー操作の記録開始(標準でShift+F1)
2.検索ダイアログで「<p><a href="」を検索。
3.「選択開始」コマンド(標準でShift+F6)
4.検索ダイアログで「広告"></a></p>」を検索。
5.Delete
6.キー操作の記録終了(標準でShift+F1)

終わりの文字列のほうはカーソル右移動したり、あるいは正規表現とかで「(?<=広告"></a></p>)」とかで終わりまでにしたほうがいいですが、ここでは簡潔にしています。
記録ができたら、キー操作の再生(標準でShift+F2)をすると、同じ操作ができます。

キー割り当て可能なコマンドの「キー操作のリピート再生...」を使って、「検索・カーソル移動ができなくなるまで」で再生すると、マクロを作らなくてもできてしまいます。
キー操作のリピート再生は、[その他]→[キー割り当て...]で割り当てたり、[その他]→[メニュー編集...]でマクロ(M)メニューに入れることもできます。

--------

次にマクロにする場合、[マクロ]→[キー操作の保存...]をすると、記録したものをマクロとして保存することができます。
上記の操作では以下のようなマクロになります。

    setcompatiblemode 0x0F;
    searchdown2 "<p><a href=\"" , hilight;
    if( ! result )  beep;
    beginsel;
    searchdown2 "広告\"></a></p>" , hilight;
    if( ! result )  beep;
    delete;

繰り返し処理をするには、while(1){〜}で囲うと繰り返します。
繰り返しを抜けるにはbreak;を書くと抜けれますが、保存されたマクロは失敗時にビープ音を鳴らしているだけなので、beep;の部分をbreak;にするといいです。
繰り返しをして検索文字列が無かったら終わるには以下のような感じになります。

setcompatiblemode 0x2000F;
while(1){
    searchdown2 "<p><a href=\"" , hilight;
    if( ! result ) break;
    beginsel;
    searchdown2 "広告\"></a></p>" , hilight;
    if( ! result ) break;
    delete;
}

setcompatiblemodeというのは互換性の指示のためのもので、あっても無くてもいいですが、0x20000を加えて検索文字列が変化してしまわないようにしておくのがいいと思います。
詳しくはヘルプを参照してください。
文字列に置き換えたりするには、最初のキー操作の記録で文字列を実際に挿入して記録すると、そういうマクロができると思います。
[ ]
RE:38647 ありがとうございます。No.38652
nobu1 さん 21/01/12 19:47 [ コメントを投稿する ]
  10年以上前から使っていますが、このソフトを超えるものはないです。
特に、日本語と中国語とロシア語をまともに読んでくれて編集できるソフトがなくて、秀丸だけが唯一できたので、重宝していました。今もずっと使い続けています。ありがとうございました。
[ ]

[ 新規に投稿する ]