正規表現を使って先頭の連続する文字を消そうとすると置換結果が正しくない

投稿者: 5104 声5 投稿

製品:EmEditor Professional Version 6.00.2 正規表現を用いて行先頭の空白2桁を削除しようとしています。 検索する文字列:‘^xx’( ^ の後に半角 x を2文字) 置換後の文字列:‘’(入力なし) テキスト(A)を全選択し、置換を実施すると、置換結果がテキスト(B)となります。テキスト(C)が正しい結果であると認識しています。 念のため、ヘルプにある「Q. 正規表現例を教えてください。」の例題「行頭の // を削除する」を確かめてみましたが、これも正しく動作しません。 -- テキスト(A) ------------------------- ABC xDEF xxGHI xxxJKL xxxxMNO xxxxxPQR xxxxxxSTU xxxxxxxVWX xxxxxxxxYZ9 ------------------------------------------ -- テキスト(B) ------------------------- ABC xDEF GHI xJKL MNO xPQR STU xVWX YZ9 ------------------------------------------ -- テキスト(C) ------------------------- ABC xDEF GHI xJKL xxMNO xxxPQR xxxxSTU xxxxxVWX xxxxxxYZ9 ------------------------------------------
見事に奇数部分だけ残ってますね。。。もしかして正規表現のチェックボックスOFFの可能性があるんじゃ?
「すべて置換」であれば、 マッチする条件が存在する限り置換を続けると思うので、 これで正常だと思いますよ。 とりあえずCの結果を得るには、 検索: ^xx(.+)$ 置換: 1 でどうでしょうか? (他の環境には詳しくないので、知った上での指摘ならすいません)
ooshida さんも書かれているように、置換ダイアログの [すべて置換] ボタンは、次を検索して置換する [置換] ボタンを次々と続けて実行することと同じなので、このような結果になります。
「すべて置換」ボタンを押した際の振る舞いに付いては、結果的に ^ 記号による指示が無効にされると言うことであると理解しました。 ※ヘルプにその旨記述していただけると助かります。ヘルプ中の表現はちょっと曖昧に感じました。 すると、 vi やその互換エディタでサポートする「行範囲指定の置換」はEmEditorではサポートしていないと言うことでしょうか。 置換のダイアログを出すと、「置換」ボタンと「すべて置換」ボタン」が活性化された状態になるのですが、「選択した範囲のみ」チェックを入れると「置換」ボタンが非活性の状態となります。 つまり範囲指定した部分に「置換」ボタンを押した際の効果を与えることができない状態となっています。 ※ooshida さんの書かれたような正規表現で回避できるので  とりあえずは問題ないのですが… 『「選択した範囲のみ」のチェックは行を意味している訳ではない』と言うことでしたら今回の振る舞いは納得できます。その場合は「機能追加の要望」へ「行範囲指定の置換」の機能追加願いを投稿させていただきます。

このトピックの投稿: 5