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'
# Print the match result
str.scan(re) do |match|
puts match.to_s
end
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 Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html