I'm not sure that a regex is exactly what you are looking for here: it isn't a text matching process, it's a pattern matching process. It can't tell the difference between:
mid night
and
midnight tonight
They are both "a word" followed by "a space", followed by "a word".
But if you want to find
word-otherword
with your first regex and then search for all occurrences of any of
word-otherword
word otherword
wordotherword
then each one will need you to create a separate regex along the lines of:
word[\s-]{0,1}otherword
and run that for each pair of match groups in your original regex results.