When you press F1 in the find dialog, you get the help. From there, the Regex help is linked showing all allowed constructs.
In short: negation is done via '~', not '!'
But I just tried replacing 'test' with 'atest', and it replaced all occurences only once (as would be expected). What use case doesn't work for you, then?
It works if you use "Replace All", however, if you just use "Replace", because of a bug with Find/Replace, it can go back over previous material before searching through the entire project (I documented that bug here: cladlab.com/programming/microcontrollers/psoc/psoc-creator).
I tried the '~' symbol, but it didn't work. Even the example they gave didn't work! (that "reality" one). And evidence to suggest that '!' is negate, not '~', comes from the fact that negaitve lookahead does work.
For example, "test(?!ing)" will match "test', "tester" and "atest", but not "testing" (as you would expect).
I cannot reproduce the problem with the find/replace dialog. I start with 'find next', it select the first match. When I press 'replace', the replacement happens and the selection jumps immediately to the next match. Which version of Creator are you using?
Apart from that, just file a support case (it looks like the documentation does not really match the implementation...)
I think you have to have multiple files (and be using find/replace in a larger-than-just-the-single-file scope) for the problem to occur. I am using PSoC Creator v2.2.
O.K., I'll file a support case