複数のテキストファイルから、特定のルーNo.04936
アフロ さん 05/11/24 03:22
 

初めまして。
マクロの楽しさに最近目覚めた、アフロと申します。
マクロを制作していたのですが、行き詰まってしまったため、始めて質問させていた
だきます。

最終目的は以下のとおりです。
複数のテキストファイルから、特定のルールに従った箇所を抽出し、csvにするマク
ロです。
-------------------------------------------------------------

「ファイルA.txt」には

 -----------------------
 あなたは●●が嫌いです。
 私は▼▼が食べたいです。
 彼は■■で満足です。
 -----------------------

と書かれており、また、
「ファイルB.txt」には

 -----------------------
 あなたは○○が嫌いです。
 私は▽▽が食べたいです。
 彼は□□で満足です。
 -----------------------

と書かれており、
これらをまとめて、以下のようなファイル「まとめ.CSV」を自動作成したいのです。

 -----------------------
 ファイルA,●●,▼▼,■■
 ファイルB,○○,▽▽,□□
 -----------------------

-------------------------------------------------------------

そのための練習&テストとして、以下のようなマクロを作ってみました。

\fを使って置換をして、foundtopx, foundtopy, foundendx, foundendyを使ってgett
extするという方針のつもりです。
しかし、うまく動きません。「わたし」の「食べたい」のが「あなた」の「嫌い」な
もの=「●●」になってしまったり、思い通りの動きになりません。
なぜでしょうか。

また、今回の件を達成する、もっと良い方法はないでしょうか。
よろしくお願いいたします。


-------------------------------------------------------------
//あなた

 gofiletop;
 replacedown "あなたは\\f.*\\fが嫌い" , "\\1", regular, nocasesense;
 $anatakirai = gettext(foundtopx, foundtopy, foundendx, foundendy);
 if($anatakirai == "") {
 message "あなたが見つかりません";
 endmacro;
 } else{
 message "あなたは…" + anatakirai + "が嫌いですね";
 }

//わたし

 gofiletop;
 replacedown "私は\\f.*\\fが食べたい" , "\\1", regular, nocasesense;
 $watashitabetai = gettext(foundtopx, foundtopy, foundendx, foundendy);
 if($watashitabetai == "") {
 message "わたしが見つかりません";
 endmacro;
 } else{
 message "わたしは…" + $watashitabetai + "が食べたいですね";
 }

endmacro;
-------------------------------------------------------------

[ ]
RE:04936 複数のテキストファイルから、特No.04937
ENCODINGSHIFTJIS さん 05/11/24 10:47
 
元テキストを直接書き換えてゆくのではなく、部分文字列を 拾ってゆく処理形のほ
うが、安定です。(処理順序の変更をやりやすい)

手操作の検索で 対象を反転表示にできるようにしましょう
検索文字列
(?<=あなたは).*(?=が嫌い)

[ ]
RE:04936 複数のテキストファイルから、特No.04938
山紫水明 さん 05/11/24 17:58
 
 アフロさん,こんにちは。

 マクロを少し書き替えて次のようにしたらどうでしょう。

//------------------------------------------------------//
//あなた

 gofiletop;
 searchdown2 "(?<=あなたは).*(?=が嫌い)", regular, nocasesense;
 if( result == 0 ) {
     message "あなたが見つかりません";
     endmacro;
 } else{
     $anatakirai = gettext(foundtopx, foundtopy, foundendx, foundendy);
     message "あなたは…" + $anatakirai + "が嫌いですね";
 }

//わたし

 gofiletop;
 searchdown2 "(?<=私は).*(?=が食べたい)", regular, nocasesense;
 if( result == 0 ) {
     message "わたしが見つかりません";
     endmacro;
 } else{
     $watashitabetai = gettext(foundtopx, foundtopy, foundendx, foundendy);
     message "わたしは…" + $watashitabetai + "が食べたいですね";
 }
endmacro;
//------------------------------------------------------//

     では, (^^)/~
                                        山紫水明(ユーザー)
                                        SANSHISUIMEI

[ ]
RE:04938 複数のテキストファイルから、特No.04944
アフロ さん 05/12/02 12:19
 
みなさんありがとうございます。
こちらで試してみたところ、一歩進みました。
正規表現をもっと勉強せねばと思いました。
また、ロジックにも少し問題があったようですね。

引き続きチャレンジしてみます。
またお世話になることもあるかと思いますが、よろしくお願いいたします。

[ ]