Negative Lookbehind Regex
Your regex is overly complicated, I must admit. The negative lookahead is going to do a lot of work to identify all the negative cases before even looking for (nearly) positive matches.

I think the trick you are missing is the word-boundary anchor. Consider the following regex:

\*\w+\b


This looks for an asterisk, followed by characters, and then a (zero length) word-boundary. Now, both *SOME* and *SOME match that, since the \b happens before the asterisk. The negative lookahead would be useful after the word-boundary. Consider the following:

\*\w+\b(?!\*)


Look for *SOME where the SOME is a complete word not followed by an asterisk.

Here's a little demonstration ....

Edit: Note, there is no reason to add the case-insensitive switch ((?i)) because your regular expression has no specific case-based characters.