Pasmal's Hash Table Swear Kicker apparently is exactly what you need. Read it carefully; if you don't get it at first, read it again. I'm sure you'll agree it's useful once you get the hang of it. One thing, instead of
$hmatch(swear_words,$strip($1-))
use
$hfind(swear_words,$strip($1-),1,W)
$hfind() is the 'modern' version of $hmatch(). $hmatch still works, but nobody knows for how long.

In your case, two hash tables, one for the words list and one for the exceptions list would probably do the job. You could add items like
/hadd exception *hot*sex* on
and
/hadd words *sex* on


/.timerQ 1 0 echo /.timerQ 1 0 $timer(Q).com