Can anyone point me in the direction of literature on matching regexes
with capturing brackets (as in sed) efficiently, i.e. without using a
backtracking NFA. Is it possible to do with a DFA?

I'd also like to be able to match several regexes against the same
text in parallel, preferably without running N regex engines in
parallel. This is different from the standard tokenization problem
because the several matches may overlap rather than occurring one
after the other. Would it be useful to think of this as
(re1)|(re2)|(re3) with capturing brackets, all of which capture if
possible?

(The aim is to speed up heuristic spam detection such as SpamAssassin.)