置換の話です。そういうものなんですね、というところです。 話を単純化していますので、正規表現(VWX)を使った場合、とお考えください。 以下、半角スペースとタブを使っています。 abc ;置換前、スペース4つ abc ;置換後、スペース3つ こんな置換をしたい場合、どうしますか? \x ^ abc ;スペース4つ abc ;スペース3つ すこし抽象化すると、こう。 \x ^ a a 'a'というキーがあるから可能。[^ ]でさらに抽象化。 しかし、 ;置換前、スペース4つ ;置換後、スペース3つ ならどうしますか? どうするんだろう? 僕は、「検索文字列」で \x ^ ;スペース1つ \x ^ + ;スペース1つ以上 ★同じ意味になるからね。 の区別ができるのだろうと思っていたのです。Vz + VWX ではダメですよね。 \x ^ [^ ]$ ;ダメです。否定が1文字くってヒットしません。 ;これ、ちょっと脱線してるけど。 うーん、そういうものなんだ。 そういうものだよ、と確認していただいたり、こうすれば? とかあったら お教えください。チガウ! も大歓迎です。 sedだと、s/srch str/repl str/1,2,3,g とかフラグがあるので(使わなくても) 直観のそのままでいくのですが。 あああああ ;置換前 ああああ ;置換後 の置換は、s/^あ// でふつうにできます。 別に「変だ!」と考えているわけではありませんが、(しつこいけど)sed的に 発想すると、Vz+VWX の世界では、 s/^あ// で "\x ^あ" "" で あああああ が ああああ でなく 空行になってしまう、ということです。けっこうすごいですよね。 けっこう落とし穴じゃないかな、と。 僕、なんか間違ってますかね? きっと、スクリーンエディタだと、一般に、こういうものなんでしょう??? まとめると、正規表現というものは徹底的に行志向で、スクリーンエディタの 文字志向と共存させるときには、ユーザはそれなりの注意を要する、ということ なのでしょう、、、か。
>#56 "\x ^あ" #m "" #m "ay" で「あああああ」の行が
>空になるのは,単純なバグではないですか?
>(その結果をもたらすのはふつう "\x ^あ*" なのでしょうけど,厳密ではない。)
1315行。ふぇーーーん。いまは、これを読む気力はありません。 アセンブラの1300行は、考え方によっては、厳密をきさなければ、 読むのが大変な行数ではないと思うのだけど。 語弊があるかもしれないけど、我々はVzの「達人」です。単語を 知ってるから。 だから、細かいこと言わなければ(直すとか言わなければ)読めなくは ないと思うのだけど。 でも、いま QuickBasic なの。逃げてるんだな、、、ふふふ。 ;**************************** ; 'string.asm' ;**************************** include vz.inc ;--- Equations --- ;OLDPAGM equ TRUE WILD_HEAD equ 00000001b WILD_TAIL equ 00000010b WILD_CASE equ 00000100b WILD_HCASE equ 00001000b WILD_H equ 00010000b WILD_T equ 00100000b WILD_F equ 10000000b SCH_WRDSCH equ 00001b SCH_ICASE equ 00010b SCH_IZENHAN equ 00100b SCH_REXP equ 01000b SCH_ICTRL equ 10000b SCHOPTCNT equ 5 TERMCODE equ 0FFh IFDEF REXP VW_KANJI equ 00000001b VW_VZMETA equ 00000010b VW_VWMETA equ 00000100b VW_WORD equ 00001000b VW_IGCASE equ 00010000b VW_JAPAN equ 00100000b VW_REXPR equ 01000000b VW_SCHVWX equ 10000000b ENDIF だいたい設定は分かるもの。ほんと?
>>単純なバグではないですか?>他のエディタではどうですか? xyzzy(?)とか?\x ^あ ;(1) と \x ^あ+ ;(2) が あああああ という行頭に位置する対象文字列に対し、「あ」を全部消してしまう、 という同じ結果を出すというのは、バグと呼ぶべきです。 秀丸では、(1)で、1個しか消しませんでした。それが素直な動きという ものでしょう。