[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: replace-match
ただいま現実逃避中。(^^;;
# とてつもなく忙しくもなく、暇でもなく、ちょっと現実逃避はで
# きるくらいに切羽詰まっている、というのがどうも free
# software の開発には良いらしい。:-)
Katsumi@Yamaoka.cc writes:
> これもわかります。ぼくの感覚では "\\|" というものの実体は info
> で言うところの
>
> `\|'
> specifies an alternative. Two regular expressions A and B with
> `\|' in between form an expression that matches anything that
> either A or B matches.
>
> なのだから replace-match の doc-string にある
>
> `\\' means insert one `\'.
>
> を一回だけ使えば良いのではないか、ということでした。XEmacs でも
> 過去に同じような議論があったのかもしれませんね。(林さん見てる?)
最近のはまともに追っかけてないのではなはだ怪しい記憶ですが、
replace-match の仕様の変更は diff.el を使うための Michael さ
んによる Emacs 互換仕様の追加くらいしか記憶にありません。
ChangeLog でもそれくらいしか見あたりませんし。
XEmacs は \ の後に特別な文字が来ない場合は \ を literal とし
てそのままにする、Emacs はエラーになる、という仕様の違いで、
意図しない間違いを防ぐ意味では Emacs の仕様の方が良いと思い
ます。
Hideyuki SHIRAI (白井秀行) <shirai@rdmg.mgcs.mei.co.jp> writes:
> そうですね。ぼくはもっと単純に \ は特別な文字だから \ でクォート
> しないといけないよね、\\ は二つで一つだよ、と感じただけです。
>
> "\\1\\|nntp:\\2" <= これはイマイチぴんとこない
> "\\1\\\\|nntp:\\2" <= やっぱこれでしょう。
>
> replace-match では \ を特別扱いするなら
>
> "\1\\|nntp:\2" <= これなら直感的で良いと思うけど
>
> じゃないかとも思うのです。
むしろ、内部的には上の直感的な文字列を使っているけれど、Lisp
reader の都合で "\\1\\\\|nntp:\\2" と書かなければならない、
と考える方が良いような気がします。
私がこういうのを書く場合は、まず "\1\\|nntp:\2" と書いてから、
全部の \ を \\ に置き換えるようにしています。
--
Yoshiki Hayashi