1 件の投稿を表示中 (合計 5 個)
  • 作成者
    投稿
  • #4030
    510
    参加者

    製品: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
    ——————————————

    #4033
    takuya
    参加者

    見事に奇数部分だけ残ってますね。。。もしかして正規表現のチェックボックスOFFの可能性があるんじゃ?

    #4034
    ooshida
    メンバー

    「すべて置換」であれば、
    マッチする条件が存在する限り置換を続けると思うので、
    これで正常だと思いますよ。

    とりあえずCの結果を得るには、
    検索:
    ^xx(.+)$
    置換:
    1
    でどうでしょうか?
    (他の環境には詳しくないので、知った上での指摘ならすいません)

    #4037
    Yutaka Emura
    キーマスター

    ooshida さんも書かれているように、置換ダイアログの [すべて置換] ボタンは、次を検索して置換する [置換] ボタンを次々と続けて実行することと同じなので、このような結果になります。

    #4039
    510
    参加者

    「すべて置換」ボタンを押した際の振る舞いに付いては、結果的に ^ 記号による指示が無効にされると言うことであると理解しました。
    ※ヘルプにその旨記述していただけると助かります。ヘルプ中の表現はちょっと曖昧に感じました。

    すると、 vi やその互換エディタでサポートする「行範囲指定の置換」はEmEditorではサポートしていないと言うことでしょうか。

    置換のダイアログを出すと、「置換」ボタンと「すべて置換」ボタン」が活性化された状態になるのですが、「選択した範囲のみ」チェックを入れると「置換」ボタンが非活性の状態となります。

    つまり範囲指定した部分に「置換」ボタンを押した際の効果を与えることができない状態となっています。
    ※ooshida さんの書かれたような正規表現で回避できるので
     とりあえずは問題ないのですが…

    『「選択した範囲のみ」のチェックは行を意味している訳ではない』と言うことでしたら今回の振る舞いは納得できます。その場合は「機能追加の要望」へ「行範囲指定の置換」の機能追加願いを投稿させていただきます。

1 件の投稿を表示中 (合計 5 個)
  • このトピックに返信するにはログインしてください。