Short answer:
A simple regular expression for this purpose would be the following:
/'[^']+'|[^\s]+/g
Code example:
data = "This-is-first-token This-is-second-token 'This is third token'";
data.match(/'[^']+'|[^\s]+/g);
Result:
["This-is-first-token", "This-is-second-token", "'This is third token'"]
Explanation:

Demo version of Debuggex
I think it is as simple as you can do it only in regular expression.
g , . .
\s ( , ). , , This-is-first-token This-is-second-token .
, :
data.match(/\{[^\}]+\}|[^\s]+/g);

Debuggex
:
data.match(/\{[^\}]+\}|'[^']+'|[^\s]+/g);

Debuggex