すみません。上記の正規表現の部分にcodeタグを使用しなかったため、ダブルクォーテーションの文字が意図していない文字に変換されてしまいました。そのため、codeタグを入れたものを再度掲載します。
———————————
江村様
いつもお世話になっております。
yasujiです。
正規表現置換で、検索文字列を["()]+(?:\r\n|[\r\n])|["()]+
に設定し、置換文字列を空にして、特定行のみを行削除する置換を実行すると1行目のみ行削除され、以降は空行が残る不具合の連絡です。
上記不具合の発生の再現手順は下記の通りです。
〔対象〕
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.置換を開いて、下記の通り設定する
[検索する文字列]
["()]+(?:\r\n|[\r\n])|["()]+
[置換後の文字列](空に設定する)
〔チェックボックス〕
チェックボックスすべて:OFF
〔ラジオボタン〕
[正規表現(X)]:ON
[高度]
〔チェックボックス〕
[CRとLFを区別する(T)]:ON
[次を検索/前を検索で重ならない文字列のみ一致する(F)]:ON
上記以外のチェックボックスすべて:OFF
[正規表現エンジン(G)]:既定(Boost.Regex)
[正規表現で検索する追加行数(L)]:0
4.すべて置換を実行する
5.結果の確認
1行目の “( は行ごと削除されるが、それ以降は空行になる。
本来は、条件に一致する行がすべて削除されなければならい。
[正規表現エンジン(G)]をOnigmoに変更しても同じ結果になる。
AAAAAAAAAAAAAAA
BBBBBBBBBBBBBB
CCCCCCCCCCCC
DDDDDDDDDDD
AAAAAAAAAAAAAAA
BBBBBBBBBBBBBB
AAAAAAAAAAAAAAA
BBBBBBBBBBBBBB
-------
6.検証
6.1 置換を開いて、下記の通り設定する
3.の設定手順のうち、下記の項目のみ変更して、設定する。
[検索する文字列]
["()]+(?:\r\n|[\r\n])
6.2 [すべて置換]を実行する
6.3 確認
期待通りの下記の結果になる。
本来は、5.の置換結果が下記と同一の結果にならなければならない。
最左から一致するものを優先的にマッチさせるため。
AAAAAAAAAAAAAAA
BBBBBBBBBBBBBB
CCCCCCCCCCCC
DDDDDDDDDDD
AAAAAAAAAAAAAAA
BBBBBBBBBBBBBB
AAAAAAAAAAAAAAA
BBBBBBBBBBBBBB
-------
7.検証2
7.1 Notepad++を開いて2.を入力する
7.2 置換を開いて、下記の通り設定する
3.の設定手順のうち、下記の項目のみ変更して、設定する。
[検索する文字列]
["()]+(?:\r\n|[\r\n])|["()]+
[置換後の文字列](空に設定する)
〔チェックボックス〕
[先頭/末尾から再検索(P)]:ON
上記以外のチェックボックスすべて:OFF
〔検索モード〕
[正規表現(G)]:ON
[.は改行と一致]:OFF
7.2 [すべて置換]を実行する
7.3 結果の確認
期待通りの下記の結果になる。
AAAAAAAAAAAAAAA
BBBBBBBBBBBBBB
CCCCCCCCCCCC
DDDDDDDDDDD
AAAAAAAAAAAAAAA
BBBBBBBBBBBBBB
AAAAAAAAAAAAAAA
BBBBBBBBBBBBBB
-------