[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: replace-match
>>>>> In [emacs-w3m : No.03830]
>>>>> Yoshiki Hayashi <yoshiki@xemacs.org> wrote:
林さん> XEmacs は \ の後に特別な文字が来ない場合は \ を literal とし
林さん> てそのままにする、Emacs はエラーになる、という仕様の違いで、
うーむ、そういうことなんですか。最初に書いたこの例↓は
(let ((string "A\\|B"))
(string-match "\\(A\\)\\(.+\\)" string)
(replace-match "\\1\\|X\\2" nil nil string))
=> "A\\|X\\|B"
"\\1" に相当する "A" と "\\|X"、それに "\\2" に相当する "\\|B"
を以下↓のように連結するつもりで書いたのですが、
(concat "A" "\\|X" "\\|B")
=> "A\\|X\\|B"
replace-match の第一引数の中で "\\" すなわち \ は特別だったので
すね。
林さん> 意図しない間違いを防ぐ意味では Emacs の仕様の方が良いと思い
林さん> ます。
納得しました。
白井さん> そうですね。ぼくはもっと単純に \ は特別な文字だから \ でクォー
白井さん> トしないといけないよね、\\ は二つで一つだよ、と感じただけで
白井さん> す。
白井さん↑はハナからわかっていた、でもぼくは白井さんがそう書いて
くれてもまだわからなかった、と。^^;;
林さん> ただいま現実逃避中。(^^;;
林さん> # とてつもなく忙しくもなく、暇でもなく、ちょっと現実逃避はで
林さん> # きるくらいに切羽詰まっている、というのがどうも free
林さん> # software の開発には良いらしい。:-)
つうか現実逃避したくなるような超多忙だったりして。
わざわざありがとうございました。
--
Katsumi Yamaoka <yamaoka@jpl.org>