use named capture group substitution