Это зависит от того, насколько широко вы хотите соответствовать. Следующее будет соответствовать любой смежной последовательности символов, не являющихся пробелами или словами, перемежающимися между этими буквами:
/p[^\s\w]*h[^\s\w]*a[^\s\w]*r[^\s\w]*m[^\s\w]*a[^\s\w]*c[^\s\w]*y/
Вы можете построить это регулярное выражение в коде. Например, в Perl:
$re = join("[^\\s\\w]*", split("", "pharmacy"))
В конечном счете, регулярные выражения, вероятно, не удовлетворят всем вашим требованиям.