Why not just get all the periods, and then a space, and use only some results?
preg_match_all('!\. !', $str, $matches);
echo $matches[0][1]; // second match
I'm not sure what exactly you want to get from this. Your question is a bit vague.
, , ( ), :
preg_match_all('!^((?:.*?\. ){2})!s', $str, $matches);
DOTALL, . .
, :
preg_match_all('!^((?:.*?\.(?= )){2})!s', $str, $matches);
, :
preg_match_all('!^((?:.*?\.(?: |\z)){2})!s', $str, $matches);
preg_match_all('!^((?:.*?\.(?= |\z)){2})!s', $str, $matches);
, , preg_match(), preg_match_all() .