import re
string = """
Which will legally declare, construct, and initialize an array?
A. int [] myList = {"1", "2", "3"};
B. int [] myList = (5, 8, 2);
C. int myList [] [] = {4,9,7,0};
D. int myList [] = {4, 3, 7};
ANSWER: D
Which will legally declare, construct, and initialize an array?
A. int [] myList = {"1", "2", "3"};
B. int [] myList = (5, 8, 2);
C. int myList [] [] = {4,9,7,0};
D. int myList [] = {4, 3, 7};
ANSWER: C
Which will legally declare, construct, and initialize an array?
A. int [] myList = {"1", "2", "3"};
B. int [] myList = (5, 8, 2);
C. int myList [] [] = {4,9,7,0};
D. int myList [] = {4, 3, 7};
ANSWER: A
Which will legally declare, construct, and initialize an array?
A. int [] myList = {"1", "2", "3"};
B. int [] myList = (5, 8, 2);
C. int myList [] [] = {4,9,7,0};
D. int myList [] = {4, 3, 7};
ANSWER: E
"""
rx = re .compile ( r'''
(?!^[A-E]\. )
(?P<question>.+[\n \r ])
(?P<choices>[\s \S ]+?)
^ANSWER:\ (?P<answer>[A-E])
''' , re .MULTILINE | re .VERBOSE )
rq = re .compile ( r'^[A-E]\. \ (?P<choice>.+)' )
for match in rx.finditer ( string ) :
def repl( line, answer) :
if line.startswith ( answer) :
line = rq.sub ( r"*\1 " , line)
else :
line = rq.sub ( r"\1 " , line)
return line
lines = [ repl( line, match.group ( 'answer' ) )
for line in match.group ( 'choices' ) .split ( "\n " )
if line]
block = match.group ( 'question' ) + "\n " .join ( lines)
print ( block)
aW1wb3J0IHJlCgpzdHJpbmcgPSAiIiIKV2hpY2ggd2lsbCBsZWdhbGx5IGRlY2xhcmUsIGNvbnN0cnVjdCwgYW5kIGluaXRpYWxpemUgYW4gYXJyYXk/CkEuIGludCBbXSBteUxpc3QgPSB7IjEiLCAiMiIsICIzIn07CkIuIGludCBbXSBteUxpc3QgPSAoNSwgOCwgMik7CkMuIGludCBteUxpc3QgW10gW10gPSB7NCw5LDcsMH07CkQuIGludCBteUxpc3QgW10gPSB7NCwgMywgN307CkFOU1dFUjogRAoKV2hpY2ggd2lsbCBsZWdhbGx5IGRlY2xhcmUsIGNvbnN0cnVjdCwgYW5kIGluaXRpYWxpemUgYW4gYXJyYXk/CkEuIGludCBbXSBteUxpc3QgPSB7IjEiLCAiMiIsICIzIn07CkIuIGludCBbXSBteUxpc3QgPSAoNSwgOCwgMik7CkMuIGludCBteUxpc3QgW10gW10gPSB7NCw5LDcsMH07CkQuIGludCBteUxpc3QgW10gPSB7NCwgMywgN307CkFOU1dFUjogQwoKV2hpY2ggd2lsbCBsZWdhbGx5IGRlY2xhcmUsIGNvbnN0cnVjdCwgYW5kIGluaXRpYWxpemUgYW4gYXJyYXk/CkEuIGludCBbXSBteUxpc3QgPSB7IjEiLCAiMiIsICIzIn07CkIuIGludCBbXSBteUxpc3QgPSAoNSwgOCwgMik7CkMuIGludCBteUxpc3QgW10gW10gPSB7NCw5LDcsMH07CkQuIGludCBteUxpc3QgW10gPSB7NCwgMywgN307CkFOU1dFUjogQQoKV2hpY2ggd2lsbCBsZWdhbGx5IGRlY2xhcmUsIGNvbnN0cnVjdCwgYW5kIGluaXRpYWxpemUgYW4gYXJyYXk/CkEuIGludCBbXSBteUxpc3QgPSB7IjEiLCAiMiIsICIzIn07CkIuIGludCBbXSBteUxpc3QgPSAoNSwgOCwgMik7CkMuIGludCBteUxpc3QgW10gW10gPSB7NCw5LDcsMH07CkQuIGludCBteUxpc3QgW10gPSB7NCwgMywgN307CkFOU1dFUjogRQoiIiIKCnJ4ID0gcmUuY29tcGlsZShyJycnCgkJCSg/IV5bQS1FXVwuKQoJCQkoP1A8cXVlc3Rpb24+LitbXG5ccl0pCgkJCSg/UDxjaG9pY2VzPltcc1xTXSs/KQoJCQleQU5TV0VSOlwgKD9QPGFuc3dlcj5bQS1FXSkKCQkJJycnLCByZS5NVUxUSUxJTkUgfCByZS5WRVJCT1NFKQoKcnEgPSByZS5jb21waWxlKHInXltBLUVdXC5cICg/UDxjaG9pY2U+LispJykKCmZvciBtYXRjaCBpbiByeC5maW5kaXRlcihzdHJpbmcpOgoKCWRlZiByZXBsKGxpbmUsIGFuc3dlcik6CgkJaWYgbGluZS5zdGFydHN3aXRoKGFuc3dlcik6CgkJCWxpbmUgPSBycS5zdWIociIqXDEiLCBsaW5lKQoJCWVsc2U6CgkJCWxpbmUgPSBycS5zdWIociJcMSIsIGxpbmUpCgkJcmV0dXJuIGxpbmUKCglsaW5lcyA9IFtyZXBsKGxpbmUsIG1hdGNoLmdyb3VwKCdhbnN3ZXInKSkgCgkJCWZvciBsaW5lIGluIG1hdGNoLmdyb3VwKCdjaG9pY2VzJykuc3BsaXQoIlxuIikgCgkJCWlmIGxpbmVdCgkKCWJsb2NrID0gbWF0Y2guZ3JvdXAoJ3F1ZXN0aW9uJykgKyAiXG4iLmpvaW4obGluZXMpCglwcmludChibG9jayk=
stdout
Which will legally declare, construct, and initialize an array?
int [] myList = {"1", "2", "3"};
int [] myList = (5, 8, 2);
int myList [] [] = {4,9,7,0};
*int myList [] = {4, 3, 7};
Which will legally declare, construct, and initialize an array?
int [] myList = {"1", "2", "3"};
int [] myList = (5, 8, 2);
*int myList [] [] = {4,9,7,0};
int myList [] = {4, 3, 7};
Which will legally declare, construct, and initialize an array?
*int [] myList = {"1", "2", "3"};
int [] myList = (5, 8, 2);
int myList [] [] = {4,9,7,0};
int myList [] = {4, 3, 7};
Which will legally declare, construct, and initialize an array?
int [] myList = {"1", "2", "3"};
int [] myList = (5, 8, 2);
int myList [] [] = {4,9,7,0};
int myList [] = {4, 3, 7};