# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"^\d+\)\s*((?:(?:(?!^\d+\))[\s\S])*?\n(([A-Z])\).*)$)?[\s\S]*?)\nAnswer:\s*(\3|FALSE)"
test_str = ("10) Once a strategy has been formulated and implemented, it is important that the firm sticks to it no matter what happens.\n\n"
"Answer: FALSE\n"
"Explanation: Strategic leaders make decisions under conditions of uncertainty and complexity. They must carefully monitor and evaluate the progress toward key strategic objectives and make adjustments by fine-tuning any strategy as necessary.\n"
"Difficulty: 2 Medium\n"
"Topic: The Strategic Role of Managers in Strategy Formulation and Implementation\n"
"Learning Objective: 01-06 Explain the AFI strategy framework.\n"
"Bloom's: Remember\n"
"AACSB: Knowledge Application\n"
"Accessibility: Keyboard Navigation\n\n"
"11) Which of the following strategies does Tesla need to implement or achieve to gain a competitive advantage?\n"
"A) imitate the features of the most popular SUVs on the market\n"
"B) reinvest profits to build successively better electric automobiles\n"
"C) sell advertising space on their cars' digital displays\n"
"D) substitute less-expensive components to keep costs low\n\n"
"Answer: B\n"
"Explanation: As mentioned in Chapter Case 1, Tesla has consistently reinvested its profits to build successively better models of electric cars while keeping its strategy secret from competitors.\n"
"Difficulty: 2 Medium\n"
"Topic: Strategy and the Strategic Management Process\n"
"Learning Objective: 01-01 Explain the role of strategy in a firm's quest for competitive advantage.\n"
"Bloom's: Remember\n"
"AACSB: Knowledge Application\n"
"Accessibility: Keyboard Navigation")
matches = re.finditer(regex, test_str, re.MULTILINE)
for matchNum, match in enumerate(matches, start=1):
print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))
for groupNum in range(0, len(match.groups())):
groupNum = groupNum + 1
print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
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 Python, please visit: https://docs.python.org/3/library/re.html