Difference between revision 3 and current revision
No diff available.Here is a little grep list that will search a list of strings for matches – and it will recurse into sublists.
(defun grep-list (pattern input)
"Grep for regexp PATTERN in INPUT.
Each element of INPUT must be either a string or a list of string.
grep-list will recurse through these lists."
(let ((things input)
result thing)
(while things
(setq thing (car things)
things (cdr things))
(cond ((listp thing)
(setq result (append (grep-list pattern thing) result)))
((stringp thing)
(when (string-match pattern thing)
(setq result (append (list thing) result))))
(t (error "neither string nor list item"))))
(nreverse result)))Some examples:
(grep-list "alex" '("this" "is" "alex" "and" "alexa"))
=> ("alex" "alexa")
(grep-list "alex" '("this" "is" "alex" ("and" "some" "alex2" "stuff") "alexa"))
=> ("alex" "alex2" "alexa")