In short search and replace uses regular expressions for the search string. Feature? Which is cool except when searching for special characters like '?'.
find("123?", "?") causes the preview to be grey, because "?" is not a valid regular expression. It is fixed by using "\?" instead:
find("123?", "\?")
I think that search and replace should be just simple searches and replaces, which is what's expected when using them.
This site:
http://80.68.89.23/2006/Jan/20/escape/
has a solution to escape all the special characters.