$re = '/^(\d+)\.\s*A B C(?:\s*\n\1\b.*)*/m';
$str = 'text = \'7
\\x0c
7. A B C
7.1 bla bla bla .
7.2 another bla bla
7.3 and another one.
8. X Y Z
8.1 ha ha ha
(a) hohoho ;
(b) hihihi,
8\'
';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php