// returns pair(regexp, vars) static Pair dollarVarsToRegexp_generic(S replacement, S s) { new L varNames_out; L tok = javaTok(s); int j = 0; for (int i = 1; i < l(tok); i += 2) { S t = tok.get(i); if (isDollarVar(t)) { replaceTokens(tok, j, i, regexpQuote(joinSubList(tok, j, i))); listAdd(varNames_out, t); tok.set(i, replacement); j = i+1; } } replaceTokens(tok, j, l(tok), regexpQuote(joinSubList(tok, j))); ret pair(join(tok), varNames_out); }