Hey, needed a little more help, but found answer before posting, so providing it for future generations.
First of all, your regex is almost good, but it doesn't work. I needed to fix few things:
".*go(\\s+.+\\s+|\\s+)north.*"
This is the resulting regex that I'm using now. As you can see,
\s
was just escaped character, which wasn't good. Changing it to \\s escaped the backslash instead.
Secondly, I discarded /i. I figured out that this was treated as part of text, instead of being regex token(or whatever it's called). After a bit more research, I found a way to achieve my goal, plus nice bonus for POSIX users.
What I needed was in regex constructor, after passing a regex, next arguments should be binary or'd flags from std::regex_constants namespace.
For example, to get regex above, working in ECMAScript standard and case-insensitive:
std::regex myRegex( ".*go(\\s+.+\\s+|\\s+)north.*", std::regex_constants::ECMAScript | std::regex_constants::icase);
Now as you see, you can feed it with ECMAScript flag, which basically tells it to use ECMAScript. I believe it's default behaviour, but you can get other regex standards. However, regex will look strange no matter what dialect you use :)
And last, but not least, you can set the behaviour of regex matching/searching as well. You use flags for it too, and they are listed in here:
http://www.cplusplus.com/reference/regex/regex_constants/ .
Thanks for help!