This will match any character that is a word and is not a p
:
((?=[^p])\w)
To solve your example, use a negative look-ahead for “My” anywhere in the input, ie (?!.*My)
:
^(?!.*My)((?<=(so|me|^))big(com?pl{1,3}ex([pA]t{2}ern)
Note the anchor to start of input ^
which is required to make it work.