Como @cuonglm disse, * significa 0 ou mais. Desde que você marcou isto com Perl, eu suponho que você esteja usando o motor regex do Perl, o que significa que você pode usar + : 1 ou mais. Então, a substituição que você procura seria uma das seguintes:
-
Corresponda caracteres alfanuméricos ou sublinhados:
s/\w+&\w+/\$$&\$/g -
Corresponder somente letras (observe o
i, o que torna o caso insensitivo):s/[a-z]+&[a-z]+/\$$&\$/gi -
Corresponda apenas as "palavras", verifique se a palavra inteira contém apenas letras:
s/\b[a-z]+&[a-z]+\b/\$$&\$/gi