searchでひっかかった文字列を取得したい。
 文章にしてみて矛盾していることに気づいた。検索する文字は最初からわかっているのだからわざわざ、バッファから取得する必要はないじゃないか。
 もちろんそうじゃない。
 検索文字列に正規表現を使うこともあるからだ。
 というわけで。
 「search-forward-regexp」で検索して「thing-at-point 'line」で一行、選択してそこから……とツールをつくっていてなんかかったるいなぁ、と思っていてふと、自分の馬鹿さ加減に気づいた。
 昔からちょっと疑問だったのだ。
 「search-forward*」系は見つかった文字のうしろにポイントが位置づけられる。「search-backward*」系は逆に前に位置づけられる1。どうしてどちらかにそろってないんだろう……。馬鹿だった。
 というのも
(setq end (search-forward-regexp x)) (setq start (search-forward-regexp x)))
 で、見つかった文字列の前後の位置が簡単にわかるのだから「buffer-substring-no-properties」を使って文字列を取得できるじゃないか。
(buffer-substring-no-properties start end)
 ああ、なんという……。
Footnotes:
1 
よくよく考えたらそれで自然なのだけれど。