可読文字抽出フィルタマクロNo.12302
コリ さん 02/07/07 22:17
 
Mac用のエディタでQUED/Mというエディタがあるのですが、「グレムリン文
字削除」なる機能があります。
いわば、ANK&漢字以外の文字以外(つまりバイナリ)文字を指摘(削除)してく
れる機能です。
このようなマクロは秀丸にはあるのでしょうか?
単純に可読文字抽出フィルタソフトウェア作ればいいじゃん!とか言われちゃいそう
ですが。。。

[ ]
RE:12302 可読文字抽出フィルタマクロNo.12313
ENCODINGSHIFTJIS さん 02/07/08 10:08
 
もう少し、条件を詳しく。
「可読」といっても、
元の「テキスト」のエンコーディング
と フォントが関係します。
(OS? ブラウザ? PDF?)とかも。

コード範囲を細かく検査するのは
エディターの役割か?

[ ]
RE:12302 可読文字抽出フィルタマクロNo.12315
ひろ さん 02/07/08 12:10
 
 コリさん今日は、ひろです。
> Mac用のエディタでQUED/Mというエディタがある
 ##NaisusWriter と同じ会社の製品 のことかな? この会社の製品って、
機能と軽快さ何方も優れているけど、以上に高いのね(;_;)。

 閑話休題
> 「グレムリン文
> 字削除」なる機能があります。
> いわば、ANK&漢字以外の文字以外(つまりバイナリ)文字を指摘(削除)してく
> れる機能です。
 文字コード、言語毎にどの文字を削除対象にするか、が問題になりますね。
取り敢えず理論的には可能です。末尾のマクロでいかがでしょう。ただし言
語によってコードの振り分けが違うので、制御コード以外は殆ど残るマクロ
になっています。ご希望の動作をしなければ、どの文字を残したいか詳細を
お知らせください。
//-------------------------------------------------------------------
gofiletop;
setsearch "[^ -\\xFF\xFF\\n\\t\\x0C]+", 20;
setreplace "";
finddown2;
while( result )finddown2;

[ ]
RE:12302 可読文字抽出フィルタマクロNo.12324
秀丸担当 さん 02/07/08 17:07
 
>Mac用のエディタでQUED/Mというエディタがあるのですが、「グレムリン
>文字削除」なる機能があります。
>いわば、ANK&漢字以外の文字以外(つまりバイナリ)文字を指摘(削除)して
>くれる機能です。

マクロである程度は処理可能かもしれないですが、秀丸に読み込んだバイナリ
データは、バイナリのまま保持されていないので、マクロで完全に処理するこ
とはできません。
たとえば、NULL文字は空白に変換されたりしています。

[ ]
RE:12313 可読文字抽出フィルタマクロNo.12328
コリ さん 02/07/08 22:14
 
>もう少し、条件を詳しく。
>「可読」といっても、
>元の「テキスト」のエンコーディング
>と フォントが関係します。

可読文字を抽出したい原始データはソニーのMD Editorなるソフトウェアのデータ
ベースファイルです。ですので、いわゆるバイナリデータなんですね。
可読とはの定義は次の条件となります。

1)漢字コード体系はシフトJIS
2)フォントはDOS窓で表示可能なキャラクタセットですが、MSの独自定義の外
字エリア文字キャラクタセットは除外

つまり、砕けた言い方をすれば、一般人がプリンタのマニュアルの最終ページに記載
のある漢字文字表を見て普通に文字だな〜と思ってもらえる範囲ならびに、アスキー
8bitテーブルの制御コード以外です。

>(OS? ブラウザ? PDF?)とかも。

OSはWindows2000、テキストブラウザは「メモ帳」、PDFは範囲外です。
厳密にいうと、MDのTOCで扱えるキャラクタセットになります。

>コード範囲を細かく検査するのは
>エディターの役割か?

もちろん、エディターの役割ではないのが本来ですよね。
バイナリデータをダンプ付きのHEXモードではないキャラクタモードでエディトし
たいので、いささか強引な使い方ですよね(^_^;

[ ]
RE:12315 可読文字抽出フィルタマクロNo.12329
コリ さん 02/07/08 22:21
 
ひろさん、再びのレス、感謝です。

> ##NaisusWriter と同じ会社の製品 のことかな? この会社の製品って、
>機能と軽快さ何方も優れているけど、以上に高いのね(;_;)。

おおっ、よくご存知ですね!
わりといい製品なんですけどね。。。
まあ、マーキュリーソフトウェア社が日本語化に相当苦労をしたと思えるので、仕方
ないですよね。MacOS X用にVerUpを期待してるんですけどね。

> 文字コード、言語毎にどの文字を削除対象にするか、が問題になりますね。
>取り敢えず理論的には可能です。末尾のマクロでいかがでしょう。ただし言
>語によってコードの振り分けが違うので、制御コード以外は殆ど残るマクロ
>になっています。ご希望の動作をしなければ、どの文字を残したいか詳細を
>お知らせください。

ありがとうございます!
試してみます!

[ ]
RE:12324 可読文字抽出フィルタマクロNo.12330
コリ さん 02/07/08 22:34
 
>データは、バイナリのまま保持されていないので、マクロで完全に処理するこ
>とはできません。

やっぱりそうですよね。

>たとえば、NULL文字は空白に変換されたりしています。

コメント頂いた不都合は私の目的には全然、問題ありませんです、ハイ。

そもそもの根本的な原因は、ソニーがVAIOとかに添付して発売したMD Editorな
るソフトウェア製品が音楽MDメディアに対して曲名をや歌手名を入出力する基にな
る自己のデータベースファイルのファイルフォーマットを開示してくれないのが、こ
のマクロを必要に思った原因です。

DBファイル解析しようと思ったのですが、どうやら可変長ファイルフォーマットな
ので複雑な設計となっており、やめちゃいました。
普通、DBにはCSV書き出し機能を装備するのがあたり前と思うのですが、オーデ
ィオメーカから今ひとつ脱皮できないのか、コンスーマ向け商品なので混乱を避ける
ために敢えて機能を削ったのか、この製品のソニーの機能設計には理解に苦しみま
す。。。(誰か解析してくれないかな。。)


[ ]
RE:12329 可読文字抽出フィルタマクロNo.12332
ひろ さん 02/07/09 01:56
 
 コリさん今日は、ひろです。
> >機能と軽快さ何方も優れているけど、以上に高いのね(;_;)。
 また「以上」と「異常」を変換ミスしている間抜けな私。
> わりといい製品なんですけどね。。。
 そうなんですよね。私はフォント情報を持たせた置換が出来るソフトをこ
れ以外知りません。
> MacOS X用にVerUpを期待してるんですけどね。
 最近 MAC を使う機械は殆どありませんが、未だに OS X ようはでていない
んですね。

 ってここまで鶴亀はおろか、Windows すら関係ない話ですね(^^;。
> > ご希望の動作をしなければ、どの文字を残したいか詳細を
> >お知らせください。
>
> ありがとうございます!
> 試してみます!
基本的には、
> setsearch "[^ -\\xFF\xFF\\n\\t\\x0C]+", 20;
の内「 -\\xFF\xFF」の部分を「 -~ぁ-んァ-ヶ亜-K」というように、残した
いコードを正規表現で記述していけばよいです。(上記のままでは、罫線やギ
リシャも字も消えてしまう。)

[ ]
RE:12332 可読文字抽出フィルタマクロNo.12344
コリ さん 02/07/09 22:58
 
ひろさん、ども、コリです。

> そうなんですよね。私はフォント情報を持たせた置換が出来るソフトをこ
>れ以外知りません。

マックライトで確かできたような?気がします。
っていっても、ワープロですけど(^_^;

> 最近 MAC を使う機械は殆どありませんが、未だに OS X ようはでていない
>んですね。

クラシック環境で動くかも??

>基本的には、
>> setsearch "[^ -\\xFF\xFF\\n\\t\\x0C]+", 20;
>の内「 -\\xFF\xFF」の部分を「 -~ぁ-んァ-ヶ亜-K」というように、残した
>いコードを正規表現で記述していけばよいです。(上記のままでは、罫線やギ
>リシャも字も消えてしまう。)

やってみましたよ!
結構、いい感じにファイルが小さくなったので、メモ帳で開いてもサクサク検索がで
きるようになりました。
感謝、感謝です。m(__)m
ところで「 "[^ -\\xFF\xFF\\n\\t\\x0C]+", 20」は意味とすると、どう読み下すん
でしょうか?(HIDEMAC.HLPの”式について>文字列のところはみましたが)
一応、改行とタブと改ページは残すコーディングと思うのですが。。。

[ ]
RE:12328 可読文字抽出フィルタマクロNo.12346
encodingshiftjis さん 02/07/10 00:23
 
ひろさんの反対の方式を試しました。
有効文字列をクリップボードに拾います。
----------------------------------
gofiletop;                  // 連続文字列ならそこそこ拾える
setclipboard "";            // 累積容器
setsearch "[ -~。-゚ -熙]+",16; // 漢字部はアバウトな気分
finddown2;
while(result){
addclipboard gettext(seltopx,seltopy,selendx,selendy)+"\x0A";
moveto selendx,selendy;
finddown2;
 }
---------------------------------
半角カタカナも拾うのでゴミが多いが、。-゚ の箇所。
何とかなるでしょう、こういう 「創発」が テキスト魂 です。

[ ]
RE:12344 可読文字抽出フィルタマクロNo.12352
ひろ さん 02/07/10 12:11
 
 コリさん今日は、ひろです。
> マックライトで確かできたような?気がします。
> っていっても、ワープロですけど(^_^;
 ひょっとすると今でも DTP の世界で標準の MAC では当たり前なのかな?

> ところで「 "[^ -\\xFF\xFF\\n\\t\\x0C]+", 20」は意味とすると、どう読み下すん
> でしょうか?
 まず正しくは「[^ -\\xFF\\xFF\\n\\t\\x0C]」でしたm(__)m。

(1)実際に文字が割り当てられているかどうか別にして、Shift-JIS コードで
は、ここの文字のコードを 16 進数表記した場合、「 (20)」から「FFFF (実
際には未定義)」に割り当てる。これを正規表現では、「[ -\xFF\xFF]」と表

(2)加えてテキストファイルでは、タブ、改行、改ページが用いられ、それぞ
れ正規表現で「\t」「\n」「\x0C」となる
(3)置換対象とこれら以外の文字なので、[^ -\xFF\xFF\n\t\x0C] を置換対象と
する。(「[]」内での先頭の尾「^」は否定を表す)
(4)マクロでは「\」を表すためには「\\」と書く
以上のことから
setsearch "[^ -\\xFF\\xFF\\n\\t\\x0C]",20;
となります。最後の 20 は、置換 (2^2=4) と正規表現 (2^4=16) の足し算で
す。(ここで 2^n は 2 の n 乗を表します。)

 ちゃんと理解するには、
(1)マクロでの表記規則
(2)文字コード
(3)正規表現
(4)OR ビット (フラグ)
の知識が必要になると思います。ヘルプで「正規表現」をご一読ください。

[ ]
RE:12352 可読文字抽出フィルタマクロNo.12363
コリ さん 02/07/11 00:06
 
ひろさん、こんばんわ、コリです。

> ひょっとすると今でも DTP の世界で標準の MAC では当たり前なのかな?
DTPじゃ、あたりまえ〜!って感じがしますよね〜
まぁ、コンピューティング文化がWinとMacでは違うのでソフトウェア機能にも
自然と反映されるわけですよね。

> まず正しくは「[^ -\\xFF\\xFF\\n\\t\\x0C]」でしたm(__)m。
あれ、でも訂正前のコーディングでも結果は結構いい感じにできてましたよ。

>(1)実際に文字が割り当てられているかどうか別にして、Shift-JIS コードで
>は、ここの文字のコードを 16 進数表記した場合、「 (20)」から「FFFF (実
>際には未定義)」に割り当てる。これを正規表現では、「[ -\xFF\xFF]」と表
>す

なるほど、「^」の直後は空白文字(x20)ってことだったんですね。
単なる視認性向上のための空白かと思ってました。
「^」の意味もそういうことですね。
要はアスキーの8bitテーブルの対象範囲の空白(x20)以降を残しますよ〜っ
て仕様ですね。(但し改行・タブ・改ページを除いて)

>setsearch "[^ -\\xFF\\xFF\\n\\t\\x0C]",20;
>となります。最後の 20 は、置換 (2^2=4) と正規表現 (2^4=16) の足し算で
>す。(ここで 2^n は 2 の n 乗を表します。)

ここがわかってないと、この20は謎ですね。

> ちゃんと理解するには、
>(1)マクロでの表記規則
>(2)文字コード
>(3)正規表現
>(4)OR ビット (フラグ)

やっぱり、見るべきところは分散しているってわけですね。
いや〜、参考になりました。ありがとうございました。

[ ]
RE:12346 可読文字抽出フィルタマクロNo.12364
コリ さん 02/07/11 00:12
 
encodingshiftjisさん、ありがとうございます。

>ひろさんの反対の方式を試しました。
>有効文字列をクリップボードに拾います。

いろいろとアプローチの方法がありますね。
いろんな問題解決の解法を見ると、それぞれについて、その発想の美しさが感じます
よね。
ところで、半角カナは私の場合には欲しい情報なので、これはこれで、役に立ちそう
です。

>----------------------------------
>gofiletop;                  // 連続文字列ならそこそこ拾える
>setclipboard "";            // 累積容器
>setsearch "[ -~。-゚ -熙]+",16; // 漢字部はアバウトな気分
>finddown2;
>while(result){
>addclipboard gettext(seltopx,seltopy,selendx,selendy)+"\x0A";
>moveto selendx,selendy;
>finddown2;
> }
>---------------------------------
>半角カタカナも拾うのでゴミが多いが、。-゚ の箇所。
>何とかなるでしょう、こういう 「創発」が テキスト魂 です。

[ ]
RE:12364 可読文字抽出フィルタマクロNo.12381
ENCODINGSHIFTJIS さん 02/07/11 10:23
 
集中して作っていないので、ラフでした。

>>setsearch "[ -~。-゚ -∪亜-腕弌-熙]+",16; // 漢字部を少し検査強化

非漢字文字の検査も強化できます、あとの追加は
アクセサリの文字コード表? などを眺めて下さい。

[ ]
RE:12363 可読文字抽出フィルタマクロNo.12400
ひろ さん 02/07/12 00:52
 
 コリさん今日は、ひろです。
 一応補足しておきます。
> > まず正しくは「[^ -\\xFF\\xFF\\n\\t\\x0C]」でしたm(__)m。
> あれ、でも訂正前のコーディングでも結果は結構いい感じにできてましたよ。
 これは秀丸のマクロが正しい形式に変換してくれるためだと思いますが、
元の間違った形式が将来のヴァージョンでも動いてくれる保証はありません。
そういう意味で、マクロを実行した結果は同じだけれど、ソースとしては間
違いという認識です。

[ ]