タグの削除(置換)のマクロが分かりませNo.05517
zin さん 00/03/31 07:40
 
初めましてタグの削除をしたいのですがどうしても完璧に行う事が出来ません。過去
ログで以下の方法である程度削除(置換)は出来ました。
---------------ここから-----------------
//*1    aa1.mac
replaceallfast "<html>" , "" , inselect;
replaceallfast "<head>" , "" , inselect;
replaceallfast "<title>" , "" , inselect;
endmacro;
---------------ここまで-----------------

しかし、
replaceallfast "&quot;" , """ , inselect;
ではエラーになり、また
<body text="#000000" link="#0000FF" bgcolor="#FFFFFF" alink="#0000FF" vlink=
"#0000FF">
        や
<font size="+2" color="#FBFBFB">
の様な場合はページによって異なる為に全てを削除出来ません。
秀丸関係の色々なマクロを試しましたが、マクロの「マ」の字も知らない私には殆ど
外国の本を読んでいる感じでさっぱり分かりません。

どの様にすれば完璧に出来るか何卒、知恵をお貸し下さい。
宜しくお願いします。

[ ]
RE:05517 タグの削除(置換)のマクロが分No.05519
きいろいまふらあ さん 00/03/31 10:25
 
きいろいまふらあです。
中途半端なアドバイスをします。

>replaceallfast "&quot;" , """ , inselect;

replaceallfast "&quot;" , "\"" , inselect;
としてください。文字列中のダブルクォーテーションは
「\"」と表記します。

><body text="#000000" link="#0000FF" bgcolor="#FFFFFF" alink="#0000FF" vlink=
>"#0000FF">
>        や
><font size="+2" color="#FBFBFB">

例えば
replaceallfast "<body[^>]*>","hoge",regular,inselect;
replaceallfast "<font[^>]*>","hoge",regular,inselect;

などとするとどうでしょうか?
[^>]*は「>」以外の文字列が0文字以上連続することを表します。
正規表現と呼ばれるもののひとつです。
検索文字列に正規表現を使うためにreplaceallfastに対して
regularというオプションを指定しています。
ただし間に改行を含んでしまうとだめです。
replaceallfast "<body[^>]*\n+[^>]*>","hoge",regular,inselect;
とでもすれば2行にまたがっているところまではいけます。

>どの様にすれば完璧に出来るか何卒、知恵をお貸し下さい。

なにしろ構文の解釈なので、完璧というのは難しいと思います。
汎用性には限界があるでしょう。

[ ]
RE:05519 タグの削除(置換)のマクロが分No.05521
ENCODINGSHIFTJIS さん 00/03/31 10:58
 
>なにしろ構文の解釈なので、完璧というのは難しいと思います。
>汎用性には限界があるでしょう。

部分範囲処理に見えるからなおさらでしょう。
結果として完璧の方向なら 削除した <...> 文字列を別画面に
行として集め、結果を人が確認する方式があります。
不正なところは手で移動。
マクロも簡単。

__E__

[ ]
RE:05517 タグの削除(置換)のマクロがNo.05532
山紫水明 さん 00/04/01 08:00
 
    zinさん こんにちは。

》どの様にすれば完璧に出来るか何卒、知恵をお貸し下さい。
》宜しくお願いします。

秀丸エディタQ&A集(第2版) Rev.F
(Windowsヘルプ 版) ・補足(タグの消去の方法…実践編)
に次の説明があります。

》上の例では複数行にまたがるタグや、コメントタグの中に書かれたタグのこと
》を考慮していませんでした。それらも考慮した、タグを完全に消去する正規表
》現を以下に示しておきます。

》<!--(.|\n)*-->|<([^>]|\n)*>

》※ただし、秀丸上での検索では約3行以上に渡るタグを正しく置換できません
》(後述の【5】秀丸上での複数行にまたがる検索について を参照して下さい)。

 では, (^^)/~
                                        山紫水明


[ ]