正規表現での行末検索についてNo.08105
TAKA さん 01/03/23 01:01
 
TAKA です。

正規表現での行末検索について、2つほど不具合?がありました。

●その1
// テストファイル(ここから)
\n
\tTEST\n
[EOF]
// テストファイル(ここまで)
「\t」はタブ、「\n」は改行、「[EOF]」はEOF

// テストマクロ(ここから)
    gofiletop;
    searchdown "^.*TEST$", regular;
    endmacro;
// テストマクロ(ここまで)

「その他→動作環境→ユーザーインターフェース→検索での表示」
を「点滅表示」にして、タブ4のテストファイルに対してテスト
マクロを実行すると、タブと「T」だけが点滅表示されます。
本来なら、タブと「TEST」が点滅表示されるべき。



●その2
// テストファイル(ここから)
TEST2\n
TEST[EOF]
// テストファイル(ここまで)
「\t」はタブ、「\n」は改行、「[EOF]」はEOF

// テストマクロ(ここから)
    gofiletop;
    replacedown "^.+\\f\\n?", "\\0\\n\\0\\n", regular, ask;
    endmacro;
// テストマクロ(ここまで)

行を二重化する目的でテストファイルに対してテストマクロを実行
すると

// テストファイル(置換後)(ここから)
TEST\n
TEST\n
TES\n
TES\n
[EOF]
// テストファイル(置換後)(ここまで)

のように最後の行の「T」が消えてしまいます。

// テストマクロ(ここから)
    gofiletop;
    replacedown "^.+\\f(\\n|$)", "\\0\\n\\0\\n", regular, ask;
    endmacro;
// テストマクロ(ここまで)

このようなマクロでも最後の行が置換されていいと思うのですが、
最後の行が置換されません。
これは、$がパターンの最後でなければならない(()の中に書くこと
は想定されていない)という仕様があるのではないかという指摘を
受けましたが、そういう仕様なのでしょうか?


最終行が[EOF]で終わらないように事前に編集したりするなどで対
応することは可能ですが、不具合だと思い報告させてもらいました。

[ ]
RE:08105 正規表現での行末検索についてNo.08106
TAKA さん 01/03/23 01:37
 
TAKA です。

>●その2
>// テストファイル(ここから)
>TEST2\n
>TEST[EOF]
>// テストファイル(ここまで)
>「\t」はタブ、「\n」は改行、「[EOF]」はEOF

●その2
// テストファイル(ここから)
TEST\n
TEST[EOF]
// テストファイル(ここまで)
「\n」は改行、「[EOF]」はEOF

の間違いです。

[ ]
RE:08105 正規表現での行末検索についてNo.08120
秀丸担当 さん 01/03/23 18:03
 
>正規表現での行末検索について、2つほど不具合?がありました。

2つとも再現することができました。
バグと思われますので調べておきます。

>これは、$がパターンの最後でなければならない(()の中に書くこと
>は想定されていない)という仕様があるのではないかという指摘を
>受けましたが、そういう仕様なのでしょうか?

そうですね。$は検索文字列の最後でなければならないと思います。


[ ]
RE:08120 正規表現での行末検索についてNo.08140
TAKA さん 01/03/25 22:13
 
TAKA です。

>>正規表現での行末検索について、2つほど不具合?がありました。
>
>2つとも再現することができました。
>バグと思われますので調べておきます。

よろしくお願いします。


>>これは、$がパターンの最後でなければならない(()の中に書くこと
>>は想定されていない)という仕様があるのではないかという指摘を
>>受けましたが、そういう仕様なのでしょうか?
>
>そうですね。$は検索文字列の最後でなければならないと思います。

やはり、仕様ですか。
#それほど支障はないので、良しとしましょう。

同じ理屈で、「^」も検索文字列の先頭でなければならいないよう
ですね。

行頭の「TEST」または、「test」を検索するためのマクロで、

searchdown "(^TEST|^test)", regular;
これは、NGですが。

searchdown "^(TEST|test)", regular;
これは、OKでしたので。

#それほど支障はありませんが。



#昨日の地震はびっくりしたなー
#10秒以上は、揺れ続けていたような。

[ ]