Subject: Re: Get subseq of alist using regexp mathcing on cars From: Erik Naggum <erik@naggum.net> Date: 2000/07/26 Newsgroups: comp.lang.lisp Message-ID: <3173631943791755@naggum.net> * "Bruce Lambert" <lambertb@uic.edu> | This is what I came up with myself. It seems to work in the simple | case where the cars are all single-character symbols. This will | work for my current application. It could, of course, be much | fancier. I still welcome suggestions. I must admit to not having understood your original request, as "assoc" is just not what you're asking for. | "Takes a regular expression and an alist and returns the subsequence | of alist whose cars match the regexp. Assume cars are all symbols | whose print-names are single characters." It doesn't really assume that. The cars may be one-character strings, characters, or symbols with one-character names. (defun regexp-subseq (sequence regexp &key (key #'car)) (destructuring-bind (match &optional (start . end)) (multiple-value-list (match-regexp regexp (map 'string (compose #'character key) sequence) :return :index)) (if match (subseq sequence start end) nil))) compose is either a macro or a function that composes functions. In this case, it produces (lambda (x) (character (funcall key x))). #:Erik -- If this is not what you expected, please alter your expectations.