タグ: 正規表現不具合
- 作成者投稿
- 2024年8月30日 11:45 pm #31889yasuji参加者
江村様
いつもお世話になっております。
yasujiです。正規っ表現検索で、検索文字列に\A.+\Zを指定して検索すると一致するはずがないにもかかわらず、すべての行が強調表示されかつ、最終行が文字列選択状態になる不具合の連絡です。
上記不具合の発生の再現手順は下記の通りです。
〔対象〕
v24.3.2 (64bit)〔使用環境〕
OS: Windows 10 Pro 64bit, ver 22H2〔再現手順〕
1.EmEditor 64bit ポータブル版を初期状態で起動
zipファイルから展開して、起動する。
初回のエディション選択は、Professionalを選択する。2.開いている文書タブに適当なテキストの入力
例えば、下記のようなテキストを文書タブに入力して未保存状態にする。"( AAAAAAAAAAAAAAA BBBBBBBBBBBBBB )" CCCCCCCCCCCC DDDDDDDDDDD ( AAAAAAAAAAAAAAA BBBBBBBBBBBBBB ) "( AAAAAAAAAAAAAAA BBBBBBBBBBBBBB )" -------
3.検索を開いて、下記の通り設定する
[検索する文字列]
\A.+\Z〔チェックボックス〕
[一致する文字列を数える(U)]:ON
上記以外のチェックボックスすべて:OFF
〔ラジオボタン〕
[正規表現(X)]:ON[高度]
〔チェックボックス〕
[CRとLFを区別する(T)]:ON
[次を検索/前を検索で重ならない文字列のみ一致する(F)]:ON
上記以外のチェックボックスすべて:OFF
[正規表現エンジン(G)]:既定(Boost.Regex)
[正規表現で検索する追加行数(L)]:04.[次を検索]を実行する
5.結果の確認
全ての行が背景色緑色で強調表示になり、1行目が選択される。
ステータスバーに「15個の一致(15行)が見つかりました。」と表示される。
Multilineモードの場合は、何も選択されないのが正しい動作になる。
全ての行の強調表示、最終行の選択状態、ステータスバーの表示はすべて誤動作のバグです。なお、[すべて選択(A)]を実行すると、すべての行が選択されるのもバグです。
6.検索を開いて、下記の通り設定する
[検索する文字列]
\A.+\Z〔チェックボックス〕
[一致する文字列を数える(U)]:ON
上記以外のチェックボックスすべて:OFF
〔ラジオボタン〕
[正規表現(X)]:ON[高度]
〔チェックボックス〕
[CRとLFを区別する(T)]:ON
[次を検索/前を検索で重ならない文字列のみ一致する(F)]:ON
上記以外のチェックボックスすべて:OFF
[正規表現エンジン(G)]:既定(Boost.Regex)
[正規表現で検索する追加行数(L)]:20007.[次を検索]を実行する
8.結果の確認
全ての行が背景色緑色で強調表示になり、最終行が選択される。
ステータスバーに「15個の一致(15行)が見つかりました。」と表示される。
Multilineモードの場合は、何も選択されないのが正しい動作になる。
全ての行の強調表示、最終行の選択状態、ステータスバーの表示はすべて誤動作のバグです。なお、[すべて選択(A)]を実行すると、すべての行が選択されるのもバグです。
9.検証
9.1 Notepad++を開いて2.を入力する9.2 検索を開いて、下記の通り設定する
3.の設定手順のうち、下記の項目のみ変更して、設定する。
[検索する文字列]
\A.+\Z〔チェックボックス〕
[先頭/末尾から再検索(P)]:ON
上記以外のチェックボックスすべて:OFF
〔検索モード〕
[正規表現(G)]:ON
[.は改行と一致]:OFF9.2 [次を検索]を実行する
9.3 結果の確認
見つかりませんのエラーが表示される。9.4.EmEditorの検索を開いて、下記の通り設定する
[検索する文字列](Boost.Regexの場合)
(?s)\A.+\Z
[検索する文字列](Onigmoの場合)
(?m)\A.+\Z
※Onigmoのmが、Singlelineモードになる。〔チェックボックス〕
[一致する文字列を数える(U)]:ON
上記以外のチェックボックスすべて:OFF
〔ラジオボタン〕
[正規表現(X)]:ON[高度]
〔チェックボックス〕
[CRとLFを区別する(T)]:ON
[次を検索/前を検索で重ならない文字列のみ一致する(F)]:ON
上記以外のチェックボックスすべて:OFF
[正規表現エンジン(G)]:既定(Boost.Regex)
[正規表現で検索する追加行数(L)]:20009.5.[次を検索]を実行する
9.6.結果の確認
全ての行が背景色緑色で強調表示になり、すべての行が選択される。
ステータスバーに「15個の一致(15行)が見つかりました。」と表示される。
Singlelineモードの場合は、1行扱いになりすべての行が選択されるのが正しい動作になる。
ステータスバーの表示は本来1個の一致と表示するべきでカウント表示バグです。 - 作成者投稿
- このトピックに返信するにはログインしてください。