;;; -*- lexical-binding: t -*- ;; ;; this file: ;; https://dataswamp.org/~incal/emacs-init/match-data-format.el (defun make-match-list (num str) (let ((match (match-string num str))) (when match (cons match (make-match-list (1+ num) str)) ))) (defun match-data-format (data match format-str) (save-match-data (string-match match data) (apply #'message format-str (make-match-list 1 data)) )) (when nil (match-data-format "From: Joe Hacker " "\\(.*\\): *\\(.*[[:alnum:]]\\) *<\\(.*\\)>" "header is: %s\nname is: %s\ne-mail is: %s") ) ; ^eval me ;; output from eval'd command: ;; ;; header is: From ;; name is: Joe Hacker ;; e-mail is: get@this.data (provide 'match-data-format)