1089a1090,1094 > (xdef 'regexp regexp) > (xdef 'r-match regexp-match) > (xdef 'r-match-pos regexp-match-positions) > (xdef 'r-replace regexp-replace) > arc> (= r (regexp "(-[0-9]*)+")) #rx"(-[0-9]*)+" arc> (r-match r "a-12--345b") ("-12--345" "-345")
-----
* whitec (test for a whitespace char)
* nonwhite (inverse of above)
* alphadig (test for alphanumeric chars)
* punc (true for any of [.,;:!?])
With the functions all and some, and a little subseq-fu you should be able to do what you want.
edit: Also look around the forum here for a patch to subseq to support negative indices for slicing off the end.