battlemonkey, your regex can be alternated to this:
on $*:text:/^[!.@](def)(ine)?(inition)? (\w+)$/Si:#: {
No need to match every word by def, define, or definition itself.