[Date Prev][Date Next][Thread Prev][][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>