It depends on how you're calling the list. unless the check begins with the word you're trying to match, it won't match unless you also add a leading wildcard of some type (which is why the example has "*" in it). Also, if you're calling the list with something like (*$LST(myList)) it won't work like you might expect because as each character is scanned against the list, the exclude will be "false" at a different point from where the match would be true. It might be easier to see without a list...
*(foo&(^barfoo))
would still match "barfoo" because at the point where "foo" is true "barfoo" is, in fact, false. Confused yet? ;-)