searchdown の疑問No.01778
番頭++ さん 98/09/29 16:13
 
環境 - Windows 95, Hidemaru Version 2.26 です。

searchdown "^\\|.*\\n", regular;    // OK desu !
は希望どうりに動きます ?

searchdown "^\\|.*\\n|:\\|.*\\n", regular;  // ???
searchdown "^\\|.*\\n|:\\|.*\\n|FORMAT ", regular;  // ???
っておかしくないですか、それとも勘違いでしょうか ???

|  MM/DD/YY FORMAT line 1
| |ENDDOC ======== line 2 ???
ENTRY FORMAT DATE(DATE):|  FORMAT line 3
EXIT line 5
| last line 6 ???
[EOF] <== データの終わりです。

[ ]
RE:01778 searchdown の疑問No.01779
番頭++ さん 98/09/29 17:25
 
もう少し、テストしました。

searchdown "^\\|.*\\n|:\\|.*\\n|FORMAT ", regular;  // ???
localgrep "^\\|.*\\n|:\\|.*\\n|FORMAT ", regular;  // OK みたいです。

この二つの結果が違います。

gofileend;
searchup "^\\|.*\\n|:\\|.*\\n|FORMAT ", regular;  // ???

も少し変です。

[ ]
RE:01779 searchdown の疑問No.01791
秀丸担当 さん 98/10/01 19:16
 
>もう少し、テストしました。
>
>searchdown "^\\|.*\\n|:\\|.*\\n|FORMAT ", regular;  // ???
>localgrep "^\\|.*\\n|:\\|.*\\n|FORMAT ", regular;  // OK みたいです。
>
>この二つの結果が違います。
>
>gofileend;
>searchup "^\\|.*\\n|:\\|.*\\n|FORMAT ", regular;  // ???
>
>も少し変です。

うーむ、なんだかよくわかりませんが、「.*\n」があると、論理和している
他の検索文字が無意味になってしまうと思うのですが、どのような意図で
こういう検索をしているのでしょうか。
「.*\n」が見つかる前に、「^\」が見つけようという意味があるのか?

[ ]
RE:01791 searchdown の疑問No.01794
番頭++ さん 98/10/01 21:03
 
>「.*\n」が見つかる前に、「^\」が見つけようという意味があるのか?

あります、次の文章の先頭に継続が表記される場合です。
プログラムコード行の継続表記は、
当該行の最後にも、次行の先頭にも存在します。です。

話は変わりますが、
「秀丸エディタ」のマクロを例題にとって見ましょう。
マクロのコメントを取り除きたいのですが ...

C1.txt を処理する、A1.amc, A2.mac, B1.mac, B2.mac の動きを見ると、
あれ荒れ、 B1.mac 君はなにをしでかしたのでしょうとなります。$a 君が ...

これらの問題はもっともっと複雑な処理でおきました。
RE:01787 の再現には、数時間 (一日) を要しました ... です。
あちきは、問題をできるだけ簡単にしてレポートしたつもりですが、
「秀丸エディタ」の検索/置換の速さを評価するとそれを使用したくなるのは、
道理です。

多量なデータに置換を始める前に、localgrep で検索条件を試すのですが、
このケースは例外でした。

\n と論理和を共存させない方法で現在は回避しています。

そんなには困っていません。置換の怖さを久々に味わいました、です ...
でも、ほかにも悩む人がいるかもしれませんね ...

番頭++

p.s. 「私は、しゃ内の不自然な置換(置換)処理のせいで会社を首になりました ...
 」
冗談ですが、ありそうな話ですよね ... しゃない ??? 社内 ??? 車内 ??? 道理 ???


//A1.mac
replaceallfast "^//.*\\n|[\\t ]*//.*", "", regular;

//A2.mac
gofiletop;
replacedown "^//.*\\n|[\\t ]*//.*", "", regular;
while( result ){
finddown;
}

//B1.mac
replaceallfast "^//.*\\n|[\\t ]*//.*\\n", "", regular;

//B2.mac
gofiletop;
replacedown "^//.*\\n|[\\t ]*//.*\\n", "", regular;
while( result ){
finddown;
}

C1.txt データの始まりです。
// 1
// 2
$a = "a";//3
$b = "b";//4
//5
//6
[EOF]

[ ]
RE:01794 searchdown の疑問No.01797
番頭++ さん 98/10/02 12:56
 
>>「.*\n」が見つかる前に、「^\」が見つけようという意味があるのか?

searchdown "^\\|.*\\n|:\\|.*\\n", regular;  // ???
の意味は、

^\\|.*\\n
|
:\\|.*\\n

「行頭が | で始まる行の行末まで、
または、
途中から、:| で始まる行の行末まで」
と解釈するのは間違いですか ???

[ ]
RE:01797 searchdown の疑問No.01809
秀丸担当 さん 98/10/08 15:45
 
>searchdown "^\\|.*\\n|:\\|.*\\n", regular;  // ???
>の意味は、
>
>^\\|.*\\n
>|
>:\\|.*\\n
>
>「行頭が | で始まる行の行末まで、
>または、
>途中から、:| で始まる行の行末まで」
>と解釈するのは間違いですか ???

すみません、勘違いをしてました。
こういうことなら確かに変です。
調べておきます。

[ ]