タグ: 正規表現
- 作成者投稿
- 2024年11月14日 12:02 am #32061yasuji参加者
江村様
いつもお世話になっております。
yasujiです。1.4 GBのテキストファイル(合計 61689810 行)を開いて[正規表現で検索する追加行数(L)]を2147483647に設定して、正規表現検索を行うと「メモリリソースが不足しているため、この操作を完了できません。」のメッセージが表示され、正規表現検索が実行できないバグ。
上記不具合の発生の再現手順は下記の通りです。
〔対象〕
v24.4.1 (64bit)〔使用環境〕
CPU : AMD Ryzen 9 3900X 12-Core Processor 3.80 GHz
RAM : 128 GB
OS : Windows 10 Pro 64bit 22H2 build 19045.5011
MB : ASUS PRIME X570-PRO〔再現手順〕
0.事前準備
WikipediaのDatabase backup dumpsのファイルをダウンロードして、それぞれ展開する。展開のファイルサイズは、非常に大きいためディスクの空き容量に注意すること。
enwiki-20241020-all-titles.gz (file size: gz 339.3 MB, txt 1.4 GB)なお、上記のファイルは、2024/11/13時点ではダウンロードできるが、3カ月程度でローテーションするため、最新の日付のURLからダウンロードする必要がある。
1.EmEditor 64bit ポータブル版を初期状態で起動
zipファイルから展開して、起動する。
初回のエディション選択は、Professionalを選択する。2.ファイルを開く
enwiki-20241020-all-titlesを開く。開く処理が終わるまで待つ。
3.検索を開いて、下記の通り設定する
[検索する文字列]
\R
(\r\n)
\x{0d}\x{0a}
(\n)
[\r\n]
上記の正規表現文字列から一つを選択して設定する。どれを選択しても同じ結果になる。〔チェックボックス〕
[大文字と小文字を区別する(C)]:ON
[一致する文字列を数える(U)]:ON
上記以外のチェックボックスすべて:OFF
〔ラジオボタン〕
[正規表現(X)]:ON[高度]
〔チェックボックス〕
[CRとLFを区別する(T)]:ON
[次を検索/前を検索で重ならない文字列のみ一致する(F)]:ON
上記以外のチェックボックスすべて:OFF
[正規表現エンジン(G)]:Onigmo.Perl
[正規表現で検索する追加行数(L)]:2147483647問題が発生する[正規表現で検索する追加行数(L)]は、下記の通り。ただし、2147483629とその近傍の数値では問題が発生しない正規表現文字列がある。
数値範囲:2147483629 ~ 2147483647※2147483647 は[正規表現で検索する追加行数(L)]を下記の通りに設定して[OK]して再度[高度]を開くことで得られる。
999999999999 ==> 21474836474.[次を検索]を実行する
5.結果の確認
[正規表現エンジン(G)]が、Onigmo.PerlまたはBoost.Regexのどちらでも、「メモリリソースが不足しているため、この操作を完了できません。」のメッセージボックスが表示され、正規表現検索ができない。[正規表現エンジン(G)]が Onigmo.Perl, Boost.Regex 以外の検索エンジンについては試していない。
2024年11月16日 10:52 am #32070Yutaka Emuraキーマスターいつもお世話になっております。江村です。
既に、こちらでは修正いたしました。次に公開されるバージョンでは修正されています。
よろしくお願いいたします。
2024年11月17日 12:42 am #32076yasuji参加者江村様
いつもお世話になっております。
yasujiです。承知しました。次の新バージョンが公開されたときに確認します。
よろしくお願いします。
- 作成者投稿
- このトピックに返信するにはログインしてください。