[4752]
Re3:行頭文字削除
かろと
>タイトル: Re3:行頭文字削除
>発言者: Thor
>以前のとまったく同じ話題ですね
>[4505] 正規表現の置換について(行頭)
>http://sakura-editor.sourceforge.net/cgi-bin/cyclamen/cyclamen.cgi?tree=r4505
>
>BREGEXPの全置換を使えば、この問題は起こらないですよね。
>前にも書きましたがJmeditor2やK2EditorではBREGEXPで全置換しているので
>問題は起きません。
これは、K2Editorの「全置換」のことを言われていると思いますが、
----------- K2Editorのヘルプより抜粋 ここから
通常の置換と全置換の違い
K2Editorの置換は、全置換と通常の置換で動作が違います。
通常の置換(連続置換も含む)
置換を行った後、置換語の次の文字から再度検索を行います。 つまり次の置換は、置換された語の影響を受けます。
全置換
全文書の文字列を検索しながら、置換語を含む新しい文字列を生成します。 そのため、検索は常に置換前の文字列に対して行われるため、 置換語の影響を受けません。
s/regexp/replaceexp/g という風に、gオプションを使用します。
特殊な正規表現検索以外では動作は同じになりますが、 単語境界(\b)を使った検索などでは、置換後の状態が検索に影響するので、 両者に違いが出る場合があります。
----------- K2Editorのヘルプより抜粋 ここまで
とあるように、K2Editorでは、通常の置換と全置換の動作が異なることを仕様として、実現していると考えるべきです。
現に、通常置換を繰り返す「連続置換」を行うと、行頭文字に何度もマッチして消えていきます。
「通常置換」と「全置換」の動作が異なる。というのは、別の問題
(例えば、通常置換で動作を確認して、全置換すると、思った結果にならない)
を引き起こすという事も考慮する必要があり、
現状のサクラは、あえて「通常置換」と「全置換」の動作を同じにする仕様なのではないかと推測します。
これを問題とするか仕様とするか意見の分かれるところなのですが、
こうも何度も出てくると、
「通常置換」と「全置換」の動作が異ならないモードと
「通常置換」と「全置換」の動作が異なるが、この問題が起こらないモードと
オプションで切り替える設定ができるのが、よいのかもしれませんね。どなたかお願いします。
>置換するのに、行からマッチする部分だけを抜き出して、
>その部分文字列に対して置換するのはなぜなんでしょうか?
>わざわざ複雑なことをしているからには、なにか理由があるとおもうのですが。
Apr. 29, 2005 (1.5.3.1)以降、
マッチする部分を抜き出して・・・の処理は、なくなってます。
では