i don't think you need an extra () for the leading white space. just tack it on in with the leading expression.
the hoc is unnecessary. just start with 2. fn buildre { re = 's:^([ ]*' for(i in `{seq 2 $1}) re = $re ^ '[^ ]+[ ]+' re = $re ^ ')([^ ]+):\1' ^ $2: } ; buildre 1 hell ; whatis re re='s:^([ ]*)([^ ]+):\1hell:' ; buildre 2 hell ; whatis re re='s:^([ ]*[^ ]+[ ]+)([^ ]+):\1hell:' - erik