const regex = /(?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)
)?
/g;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?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)
)?
', 'g')
const 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`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
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 JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions