I want to parse a given buffer and extract all strings that match a regexp and get a list of strings.

That would be done with a regexp search, matching groups, and extracting matches. We would use-restriction , do a search-forward-regexp , use backslashes to delimit groups (and even double backslashes in elisp), then get back the matches with match-string and maybe replace-match . Well.

Enters m-buffer . https://github.com/phillord/m-buffer-el/

The following returns a list of markers:

( m-buffer-match ( current-buffer ) "a regexp" )

If you want a list of strings, do

( m-buffer-match-string-no-properties ( m-buffer-match ( current-buffer ) "a regexp" ))

And yeah, that's it. We can also replace, delete, extract matches, apply a function to matches, add properties or overlays,…

Note that there's no documentation on github (edit: see commentary), but the sources are very well documented (looks like literate programming actually), and we generate the doc ourselves as indicated.