[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [bep] wmail support mode?



n高橋です。

Koichi INOUE writes:

> 文字列「\\\\」(\が四つ)をプログラム中に記述するときは、
> "\\\\\\\\"
> と8個にしないといけなくなります。

関数 search-forward の中なら8個ですが、re-search-forward の中だと16個
必要になります。Lisp の文字列定数の中、つまりダブルクオートでくくった
中では1個の \ を表すために \\ と書く必要があるのでまず2倍、次に正規表
現の中で1個の \ を表すために \\ と書く必要があるので更に2倍、合わせて4
倍です。

(search-forward "\\\\") の場合:
Lisp にとっては "\\" という文字列を探せという命令になる。

(re-search-forward "\\\\" の場合:
Lisp にとっては "\\" という正規表現を探せという命令になる。
正規表現としての "\\" は "\" という文字列を意味する。

それから、プログラム中で re-search-forward する場合は、とりあえず
(re-search-forward "abc" nil t) のように最後に nil と t という引数を付
けておいた方がいいと思います。C-h f すれば説明が出てきますが、最初は読
んでもわかりにくいかもしれません。

>>  あと、もう一つおもしろかったのは、\|を使って検索した場合、まず最初に指
>> 定した文字列を検索して、それがなかった場合にだけ二番目の文字列を検索する、
>> みたいになっているんですね。

> え?そういうことはないと思うのですが、違うかな?
> そういう前提だといろいろ不都合が出てくる気がするのですが。
> たとえば、Emacsの起動時に現れる This bufferで始まる文章の最初にカーソ
> ルを置いて
> M-x re-search-forward
> で v\|er を検索すると、ちゃんと最初のbufferに止まります。

井上さんの言うとおりになっているはずです。

>> の(cons)は、なにをする関数なのでしょう?

> これはn高橋さんが積み残したと言っておられたlistの説明を待つ方がいいか
> も知れませんが、
> (cons 'a 'b)
> でcarが'a cdrが'bのcons cellを作るということになってます。
> うう、説明を書こうとしましたが、今考えていると首になりそうなのでやめて
> おきます。(^^;)

説明を書き始めてみたのですが、今やっていると首になりそうなので後でまと
めます。(^^;)
しばしお待ちを。

-- 
TAKAHASHI Naoto
ntakahas@...
http://www.m17n.org/ntakahas/