(defun hoge (regexp)
  (interactive "sRegexp: ")
  (let (r)
    (save-excursion
      (goto-char (point-min))
      (while (re-search-forward regexp nil t)
        (let ((start (progn (beginning-of-line) (point))))
          (forward-line)
          (setq r (cons (buffer-substring start (point)) r))))
      (kill-new (apply #'concat (nreverse r))))))