Add implementation of start/end/capture groups together with a more efficient alternative implementation