フォーラムの返信を作成しました。

101 件の投稿を表示中 (合計 106 個)
  • 作成者
    投稿
  • 返信先: すべて一括置換のマクロ作成について #30581
    Applek
    参加者

    ありがとうございます。
    わかりました。
    正規表現は連続置換にします。

    以前の過去のバージョンアップ記事を読み込むと1回のバージョンアップで速度が何百倍とかに速度アップしている事例が多数ありました。
    連続置換自体もまだ速くなる余地はありそうでしょうか?

    私が気がついている限りでは、前の質問で書いたことと重複しますが、
    数十万の置換を並べた場合だと1回で閉じるよりも2000個くらいで一度区切りでそれを繰り返した方がはるかに速くなります。
    書き方を変えるだけでも速度が変化しますが、おそらく、これは試行錯誤した人しか気がつかないです。
    batch_list = editor.filters;
    2000個くらいの置換
    document.selection.BatchReplace(batch_list,eeReplaceAll,eeExFindRegexOnigmo);

    これくらいに一度閉じてやったほうがかなり速くなります。
    このことから、動作のアルゴリズムでユーザーがコードを書いていなくても2000回くらいで区切った扱いとして処理すると1回閉じでも速くなると思います。
    よろしくお願いいたします。

    返信先: すべて一括置換のマクロ作成について #30579
    Applek
    参加者

    ありがとうございます。
    毎回1個書くごとに毎回閉じないといけない仕様と言うことがわかりました。
    その書き方でもトータルで速くなれば良いです。
    連続置換だと毎回1個のファイルをやるのに終わるまで10分とかかかります。
    おそらく私はEmEditorの使っている人のなかではかなりヘビーな動作をさせているほうだと思います。
    ひとつのファルだけでEmEditorでマクロが終わるまで30分以上かかるものが多数あります。
    今まで書いたのは、ほとんどの動作はOnigmoでしか動かない\\p{Han}とかの組み合わせコードで書いているので、本格的な動作はまだできない状況です。
    よろしくお願いいたします。

    返信先: すべて一括置換のマクロ作成について #30577
    Applek
    参加者

    ありがとうございます。
    前の連続置換との一括置換の動作の違いを質問させて頂きます。
    document.selection.BatchReplace(batch_list,eeReplaceAll,eeExFindRegexOnigmo);
    この連続置換のときと違って続けて並べて書くことはできないのでしょうか?

    以下のようだと北海道までで処理が止まります。
    batch_list = editor.filters;
    batch_list.AddReplace(“ほっかいどう”,”北海道”,eeFindReplaceRegExp,0);
    batch_list.AddReplace(“北海道”,”ホッカイドウ”,eeFindReplaceRegExp,0);
    batch_list.AddReplace(“ホッカイドウ”,”太郎”,eeFindReplaceRegExp,0);
    document.selection.BatchReplace(batch_list,eeReplaceAll,eeExFindRegexBoost | eeExFindMulti);

    以下の場合は、ほっかいどうから始まって、太郎まで変換します。
    こんな感じで毎回1処理ずつ囲まないといけなくなりましたでしょうか?よろしくお願いいたします。

    batch_list = editor.filters;batch_list.AddReplace(“ほっかいど.”,”北海道”,eeFindReplaceRegExp,0);document.selection.BatchReplace(batch_list,eeReplaceAll,eeExFindRegexBoost | eeExFindMulti);
    batch_list = editor.filters;batch_list.AddReplace(“北海.”,”ホッカイドウ”,eeFindReplaceRegExp,0);document.selection.BatchReplace(batch_list,eeReplaceAll,eeExFindRegexBoost | eeExFindMulti);
    batch_list = editor.filters;batch_list.AddReplace(“ホッカイド.”,”太郎”,eeFindReplaceRegExp,0);document.selection.BatchReplace(batch_list,eeReplaceAll,eeExFindRegexBoost | eeExFindMulti);

    返信先: すべて一括置換のマクロ作成について #30573
    Applek
    参加者

    バージョンアップありがとうございます。
    さっそく最新バージョンを使わせていただいているいるのですが、以下のマクロが同じ動作結果にはならないのは仕様でしょうか?

    以下のようなサンプルです。
    動作テストをするとまったく違う結果になるのは仕様でしょうか?
    よろしくお願いいたします。

    動作テスト対象文
    ののののののののののののののほっかいどうりりりりりりりりりりりりりりりり
    ののののののののののののののほっかいどうりりりりりりりりりりりりりりりり
    ののののののののののののののほっかいどうりりりりりりりりりりりりりりりり

    新しい機能のマクロ
    batch_list = editor.filters;
    batch_list.AddReplace(“^(.*?)ほっかいどう(.*?)$”,”\\1北海道\\2″,eeFindReplaceRegExp,0);
    document.selection.BatchReplace(batch_list,eeReplaceAll,eeExFindRegexOnigmo | eeExFindMulti);// 新バージョンの書き方

    通常の以前のやり方の置換
    batch_list = editor.filters;
    batch_list.AddReplace(“^(.*?)ほっかいどう(.*?)$”,”\\1北海道\\2″,eeFindReplaceRegExp,0);
    document.selection.BatchReplace(batch_list,eeReplaceAll,eeExFindRegexOnigmo);

    Applek
    参加者

    お世話になっております。
    追加です。
    半角全角を区別しないを組み合わせると

    ほっかいドウ
    ホッカイどう
    これらもマッチすることになります。

    返信先: すべて一括置換のマクロ作成について #30566
    Applek
    参加者

    バージョンアップありがとうございます。
    すべて一括置換は正規表現は、対応してないというのは、これは技術的に不可能なのか、それとも最初の段階では、とりあえず通常の置換だけに対応して随時、正規表現も対応へとバージョンアップしていくという予定でしょうか?
    正規表現も含めて6000倍とかになったこれは、凄いことです。
    よろしくお願いいたします。

101 件の投稿を表示中 (合計 106 個)