For filenames, Query Operators can offer some help:
should give you the results you want:
But content search doesn't seem as well behaved. Created two files, one with content "foo-bar", the other with content "foo bar". The following attempts returned both files:
content:~~"foo-bar" returned none!
So, for accurae content searching, I would go with PowerShell and the Select-String cmdlet:
There's definitely a learning-curve, but with support for regular expressions, it's a very powerful tool.