

EmEditorで優先順位指定ソート、並べ替えを一発指定したいことについて  
お世話になっております。

前回の並べ替えの続きです。前回の質問と重複するところもあります。

安定ソートにチェックを付けて優先順位の低いところからやってますが▽から先に指定しても次に▲で指定すると以下のように11がつごろとか最初の動いてほしくないところの数字が並べ替えに影響してしまいました。

指定マークの数値で並べ替えをがっちりやりたいです。

結果

▼11がつごろ▲1905●1994▽5971◆十一月頃■  
▼11がつさい▲1905●1944▽7195◆11月祭■  
▼11がつさい▲1905●1944▽7695◆十一月祭■  
▼11がつまつ▲1905●2001▽4998◆11月末■  
▼11がつまつ▲1905●2001▽5498◆十一月末■  
▼11がつごろ▲1905●1994▽6491◆十一月ごろ■  
▼11がつごろ▲1905●1994▽5991◆11月ごろ■  
▼11がつうまれ▲1905●697▽6843◆十一月生まれ■  
▼11がつうまれ▲1905●697▽6343◆11月生まれ■  
▼11がついべんと▲1905●1837▽7674◆十一月イベント■  
▼11がついべんと▲1905●1837▽7174◆11月イベント■  
▼11がつげじゅんごろ▲1905●1994▽7820◆11月下旬頃■  
▼11がつちゅうじゅんごろ▲1905●1994▽7603◆11月中旬頃■  
▼11がつげじゅん▲1996●1996▽5061◆11月下旬■  
▼ごとく▲12●12▽6350◆如く■  
▼やらい▲12●12▽6277◆夜来■  
▼らくに▲12●12▽4786◆楽に■  
▼まさに▲12●12▽3944◆正に■  
▼しんに▲12●12▽4836◆真に■  
▼しばし▲12●12▽4838◆暫し■  
▼せつに▲12●12▽4840◆切に■  
▼あまり▲12●12▽3955◆余り■  
▼だんこ▲12●12▽7130◆断乎■  
▼さほど▲12●12▽5285◆然程■  
▼どだい▲12●12▽4852◆土台■  
▼ちかく▲12●12▽6075◆近く■  
▼げんに▲12●12▽4004◆現に■  
▼あんに▲12●12▽4863◆暗に■  
▼なんら▲12●12▽5976◆何等■  
▼あえて▲12●12▽5813◆敢て■

指定の方法としては、  
並べ替えの時に二段階、もしくは、三段階、四段階での一発並べ替えは可能でしょうか？

事例  
▼だっこ▲1934●1934▽4616◆抱っこ■

▼ふくいん▲1934●1934▽6509◆復員■

▼れんぞく▲1934●1934▽3700◆連続■

このように▲の番号を第一の並べ替えとしてこの▲数字順は固定したまま次に二段階目に▽の順番を詳細に並べ替える方法は可能でしょうか？

整列後  
▼れんぞく▲1934●1934▽3700◆連続■

▼だっこ▲1934●1934▽4616◆抱っこ■

▼ふくいん▲1934●1934▽6509◆復員■

場合によってはこれらの順番が5つくらい段階があることもあるかと思います。  
この場合、CSVのように何列目という法則性がなく指定したいこともあると思います。

この場合一度に指定順序を曖昧ではなく、正規表現ではっきり指定して全部決めて並べ替えは可能でしょうか？

たとえば、「記号、もしくは正規表現に続く数字を段階的に並べ替える」という複数の指定項目を検索窓のように並べて一発で複数優先順位を指定して並べ替えできる方法です。  
優先順位の取り決め  
1回目 (?<=▲)\d+ 昇順  
2回目 (?<=●)\d+ 昇順  
3回目 (?<=▽)\d+ 昇順

というふうに1回、1発で昇順、降順指定できる方法です。

うまくいかないのは私のやり方のミスかもしれませんが、指定のセッティングをこんな感じで優先順位の取り決めを全部1回で指定できると幸いです。

よろしくお願いいたします。


CC BY-SA 4.0
2021-02-18T22:05:05.867
74117
2021-02-19T03:07:09.897
43999
question
emeditor
EmEditorで優先順位指定ソート、並べ替えを一発指定したいことについて


次のマクロでいいと思います。私のご質問の理解が間違っていたらご指摘ください。

[code]

    document.selection.Find("(?<=▽)\\d+",eeFindReplaceRegExp | eeFindSelectAll,0);
    document.Sort("N+",eeSortSelectionOnly | eeSortStable);
    document.selection.Find("(?<=●)\\d+",eeFindReplaceRegExp | eeFindSelectAll,0);
    document.Sort("N+",eeSortSelectionOnly | eeSortStable);
    document.selection.Find("(?<=▲)\\d+",eeFindReplaceRegExp | eeFindSelectAll,0);
    document.Sort("N+",eeSortSelectionOnly | eeSortStable);
    
[/code]


CC BY-SA 4.0
2021-02-19T03:07:09.897
74125
2021-02-19T03:07:09.897
40017
74117
answer