Используйте как вам говорили preg_match_all и изучите жадность и линивость иначи .* будет забирать весь текс до последнего закрытого div
Ну и по вопросу <div>(.*?)<\/div>
в preg_match_all в результирующий массив в ;$res[0] массив попадает все выражение целиком а вот в $res[1] массив попадет именно то что вам нужно.
Регулярки для этого не лучший вариант. Для HTML лучше использовать парсер - symfony/dom-crawler например. Простая выборка селекторами схожими с тем, что используются в jquery.