If that's the case then possibly a modifcation of the pattern to:
\b(?!(?:[MD]S|IB)\b)[a-zA-Z0-9]+\b
I am unable to get a match with:
(^|\s)(?!MS|IB|DS)[a-zA-Z0-9]+$?
Although I see where where you were going with that.
Since it will ignore words with underscores in them, if the asker wants to include those words too:
\b(?!(?:[MD]S|IB)\b)\w+\b
Since words with apostrophes will also be excluded unless you modify the pattern to allow for them:
\b(?!(?:[MD]S|IB)\b)[\w']+\b
Test String:
This is a test of a pattern's efficacy excluding DS, MS, and IB but not IBB or BIB.
Results:
Array
(
[0] => Array
(
[0] => This
[1] => is
[2] => a
[3] => test
[4] => of
[5] => a
[ 6] => pattern's
[7] => efficacy
[ 8] => excluding
[9] => and
[10] => but
[11] => not
[12] => IBB
[13] => or
[14] => BIB
)
)