sS regexpReplace_directWithRefs(S s, S pat, S replacement) { Matcher m = regexp(pat, s); ret regexpReplace_direct(m, replacement); } sS regexpReplace_directWithRefs(Matcher m, S replacement) { new StringBuffer buf; while (m.find()) m.appendReplacement(buf, replaceDollarVars2_dyn(replacement, v -> !isInteger(v) ? null : matcherGroup(m, parseInt(v)))); m.appendTail(buf); ret str(buf); }