1 件の投稿を表示中 (合計 10 個)
  • 作成者
    投稿
  • #4324
    匿名
    ゲスト

    タイトル付け忘れましたので、タイトルのみ付け加え修正しました。

    選択範囲のみの置換で、 量指定子がある時とない時で、正規表現の置換動作が異なってます。

    editor.NewFile();
    document.Write(‘aaaaaaaaaaaaaaarnbbbbbbbbbbbbbbbrncccccccccccccccrnddddddddddddddddrneeeeeeeeeeeeeeeeern’);

    document.selection.SetActivePoint(eePosLogical,10,1,false);
    document.selection.LineDown(true,3);

    //var search = “^.+”; //選択最終行が置換されない
    var search = “^..”; // 正常に期待通り置換される。

    document.selection.Replace(search,”U”,eeFindNext | eeReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp);
    //—
    ■ それからこの不具合は忘れられているのでしょうか?

    http://jp.emeditor.com/modules/xoopsfaq/index.php?cat_id=5&com_id=3&com_rootid=3&#comment3

    #4328
    ShuHei
    メンバー

    選択範囲のみの置換で、 量指定子がある時とない時で、正規表現の置換動作が異なってます。

    恐らくマッチし終わる前に見かけ上の終了地点を
    越えてしまうので処理を中止してるんでしょうね。


    因みにパッと試しver7では下の不具合は出なさそうです。

    #4329
    Yutaka Emura
    キーマスター

    選択範囲のみの置換で、 量指定子がある時とない時で、正規表現の置換動作が異なってます。

    これは解釈の問題かもしれません。.+? だったら、最小の文字列と一致するので問題ないのですが、.+ だと最大長の文字列と一致しなければならないので、選択範囲を超えて一致する方が正しいともいえますね。

    http://jp.emeditor.com/modules/xoopsfaq/index.php?cat_id=5&com_id=3&com_rootid=3&#comment3

    は、こちらでは v6.00.4、v7.00 alpha ともに、再現しないですね。何か条件があるのでしょうか?

    #4332
    匿名
    ゲスト

    これは解釈の問題かもしれません。.+? だったら、最小の文字列と一致するので
    問題ないのですが、.+ だと最大長の文字列と一致しなければならないので、選択範囲を
    超えて一致する方が正しいともいえますね。

    ShuHei さんも、不具合とだと認識しているみたいですし、
    V7では再現しないとのことです。
    もしこれが不具合ではなく、そういう仕様だとすれば、逆にV7は不具合をかかえていると
    いうことでしょうか?
    すくなくとも、V6.00.4とV7のどちらかが不具合ということになります。

    EmEditorにおける「選択範囲のみ」とは、何をさすのでしょう?
    選択範囲の最終行の選択範囲外もマッチングの対象になっていて、そのマッチングを元に
    選択範囲のみが置換されるというのは、
    不自然すぎると思いますよ。

    一般的には、選択範囲だけのテキストがあると解釈して、その範囲内だけの文字列に、正
    規表現を適用するのが、普通というかわかりやすいのではないでしょうか?つまり、選択
    範囲のみをコピーして、NewFile()して、貼り付けしてすべて置換して、すべて選択して、
    元のドキュメントの選択範囲に貼り付けと同じ動作。

    そういう意味においては、「^」も、選択範囲のみでは、選択範囲の先頭にもマッチした
    方が分かりやすいし、自然と思います。

    おそらく、これは、
    http://jp.emeditor.com/modules/newbb/viewtopic.php?topic_id=147&forum=5

    の最後の投稿とものすごく密接にかかわっていると思います。

    EmEditorは、選択範囲に対する扱い方が、テキスト全体の文脈の中の一部であるというこ
    とで、正規表現自体は、選択範囲に関係なくテキスト全体として評価して、置換対象は、
    選択範囲のみであるという、仕様なのだということで良いのでしょうか。
    しかし、そうすると、V7は明らかに不具合ですよね。

    とにかく仕様をハッキリさせてほしいですね。
    そういう仕様なら仕様ということで諦めて、自分が期待する動作は、マクロで全部することにすれば、特に問題はありません。

    #4334
    ShuHei
    メンバー

    perlerさんは書きました:
    ShuHei さんも、不具合とだと認識しているみたいですし、
    V7では再現しないとのことです。

    私の言葉足らずで誤解させてしまっているようで申し訳ないです。
    「下の」というのは強調表示の件です。

    ver7でも置換の件はperlerさんがおっしゃるとおりの
    置換結果となりますので、特にver7固有の不具合
    というわけではありません。

    正規表現自体は、選択範囲に関係なくテキスト全体として評価して、置換対象は、
    選択範囲のみであるという、仕様なのだということで良いのでしょうか。

    エディタ側からみればデフォルトはこういう
    仕様で良いかと思います。

    ただ、検索・置換のオプションに関しては場合よって
    要求される挙動が違うので将来的にもっと詳細に
    挙動が指定できると便利ですね。

    #4336
    Yutaka Emura
    キーマスター

    このあたりは非常に複雑なため、今後はオプションを増やしていく方向になると思います。ただ、あまりオプションを増やすと使いづらくなるというのもありますので、難しいのですが、将来的に検討します。

    #4337
    匿名
    ゲスト

    投稿したはずなのですがどうも投稿できていなかったみたいです。

    http://jp.emeditor.com/modules/xoopsfaq/index.php?cat_id=5&com_id=3&com_rootid=3&#comment3

    1重引用符[‘…’](&Q)
    2重引用符[“…”](&D)

    この設定が有効になってる場合に、「'”」の直後が、強調されてしまいます。
    この設定が無効の場合は再現しません。

    強調の優先順位の関係で、引用符でテキスト分割されて、引用符の直後がテキストの先頭とみなされている様に見えます。

    #4338
    匿名
    ゲスト

    あれ、V7でもそうですか^^;
    スクリプトばっかりやってると、こういう仕様は凄く違和感あるんですけど、エディタではこれが当たり前の普通の事なんですかね。 他のエディタもそうなんですかね。

    エディタでは、現在の仕様が普通なんだということで、考えを改めることにします。

    どうもありがとうございました。

    #4339
    匿名
    ゲスト

    設定は特に増やす必要ないと思います。
    個人的には設定が多いのは、好まないです。
    今でも、正規表現のオプションが2,3あるのだけでも嫌な感じですし。

    現在の動作は、それはそれで普通なんだと納得しましたので、
    個人的にはそういうオプションをつけることは要望しません。
    現在の仕様で、信頼性を高めていただければ、そっちの方が嬉しいです。

    現在の仕様は、スクリプトではまず無理なので、ある意味貴重といえば貴重ですし、私の
    期待する動作は、必要な個所を抜き出してコピーして別のタブでやってしまえば簡単に出
    来る事なので。

    どうも、お騒がせしました。

    #4341
    ShuHei
    メンバー

    perlerさんは書きました:
    スクリプトばっかりやってると、こういう仕様は凄く違和感あるんですけど、エディタではこれが当たり前の普通の事なんですかね。 他のエディタもそうなんですかね。

    スクリプトばっかりやってるとこのような挙動は
    確かに違和感を感じますよね。

    因みに手元のemacsでさくっと試した所、マッチする
    箇所が選択範囲を超えてしまった為警告文出しましたが、最後の行も選択範囲までは変換されました。

    他のエディタでは選択範囲を指定しても無視して
    行単位で置換していたりするようです。

    ここらへんは設計思想で分かれてしまうので一概に
    なんとも言えないですねー。

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