# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"(<(span).+?><(strong|em)>(.+?)<\/\3><\/\2>)"
test_str = "<p>Alligators much like birds, have been shown to exhibit unidirectional movement of air through their lungs. Most other amniotes are believed to exhibit bidirectional, or tidal breathing. For <span style=\"color: #3a9ee3;\"><strong>alligator</strong></span> tidal breathing <span style=\"color: #3a9ee3;\"><strong>alligator</strong></span> animal, such as a mammal, air flows into and out of the <span style=\"color: #169179;\"><em>alligators</em></span> lungs through alligator branching bronchi which terminate in small <em>alligator</em> dead-end chambers called alveoli. As the alveoli represent <span style=\"color: #3a9ee3;\"><strong>Lion</strong></span> dead-ends to flow, the inspired air must move back out the same way it came in. In contrast, air in <span style=\"color: #3a9ee3;\"><strong>alligator</strong></span> lungs makes a circuit, moving in only one direction through the parabronchi. The <span style=\"color: #3a9ee3;\"><strong>alligators</strong></span> lungs are no joke! The air first enters the outer branch, moves through the parabronchi, and exits <span style=\"color: #3a9ee3;\"><strong>alligators</strong></span> the lung through the inner branch. Oxygen alligator exchange takes place <span style=\"color: #3a9ee3;\"><strong>Alligators</strong></span> in extensive vasculature around the alligator.</p>"
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