$re = '/(?mi)
^
(?!
\h*
(?: [A-Z] \h* \. | ANSWER \h* : )
)
\h*
(?<question> \S .*? ) # (1)
\?? \h* \s* ^ \h* A \h* \. \h*
(?<A> .*? ) # (2)
\h*
\s*
(?:
^ \h* B \h* \. \h*
(?<B> .*? ) # (3)
\h*
(?:
\s* ^ \h* C \h* \. \h*
(?<C> .*? ) # (4)
\h*
(?:
\s* ^ \h* D \h* \. \h*
(?<D> .*? ) # (5)
\h*
(?:
\s* ^ \h* E \h* \. \h*
(?<E> .*? ) # (6)
\h*
)?
)?
)?
)?
\s* ^ \h* ANSWER \h* : \h*
(?<answer1> [A-F] ) # (7)
(?:
\h* , \h*
(?<answer2> [A-F] ) # (8)
)?
/x';
$str = 'Linux is
A. A Graphic Software
B. A Driver
C. A Line Controller Software
D. An Operating System
ANSWER: D
Which feature helps in compress and contain the collection of files in to one
A. Zip
B. Shortcut
C. Icon
D. Extract
ANSWER: A
What is php?
A. Php is a language.
B. Php creates HTML.
C. Php is fun.
D. none of these.
ANSWER: D
Which is YII-2?
A. Framework.
B. Tool.
C. None of these
ANSWER: A,B';
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