# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"(^(HL\/)+HL$)|(^HLx\d+$)|(^HL$)"
test_str = ("Guard\n"
"HL/H\n"
"-\n"
"HL/HL\n"
"L/L\n"
"L/L\n"
"HL/HL\n"
"L/HL\n"
"HL/HL\n"
"L/HL\n"
"HL/HL/HL\n"
"L/HL/HL\n"
"HL/HL\n"
"HL/HL/HL\n"
"HL/HL/HL/HL\n"
"HL/HL\n"
"HL/HL\n"
"HL/HL\n"
"HL/HL\n"
"HL/HL/HL\n"
"HL/HL/HL\n"
"HL/HL/HL\n"
"HL/HL\n"
"HL/HL\n"
"HL/HL\n"
"HL/HL\n"
"HL/HL/L/HL\n"
"HL/HL\n"
"HL/HL\n"
"HL/H\n"
"HL/HL\n"
"HL/HL\n"
"HL/HL\n"
"HL/HL\n"
"HL\n"
"HL/HL\n"
"HL/HL\n"
"HL/HL\n"
"HL\n"
"LH/LH\n"
"L/H\n"
"HL/HL\n"
"HL/HL\n"
"HL\n"
"LH/LH\n"
"L/H\n"
"HL/HL\n"
"HL/HL\n"
"HL/HL\n"
"HL/HL\n"
"HL/HL/HL\n"
"HL/HL/HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"(B+F)+LP+LK\n"
"(B/F)+LP+LK\n"
"LP+LK\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"L\n"
"HL\n"
"L\n"
"HL\n"
"HL\n"
"HL\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"HL\n"
"LP+LK\n"
"-\n"
"-\n"
"-\n"
"F/B+LP+LK\n"
"F+LP+LK\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"H\n"
"HL\n"
"LP+LK\n"
"B+LP+LK on backturned opponent\n"
"HL\n"
"LP+LK\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"H\n"
"B/F+LP+LK\n"
"LP+LK\n"
"LP+LK\n"
"LP+LK\n"
"LP+LK\n"
"LP+LK\n"
"LP+LK\n"
"=+\n"
"=+\n"
"LP+LK\n"
"H\n"
"H\n"
"HL\n"
"HL\n"
"HL\n"
"LP+LK\n"
"HL\n"
"HL\n"
"HL\n"
"LP+LK\n"
"HL\n"
"HL\n"
"L\n"
"HL\n"
"L\n"
"L\n"
"HL\n"
"LP+LK\n"
"HLx2\n"
"HL\n"
"HL\n"
"HL\n"
"B+LP+LK\n"
"B/F+LP+LK\n"
"B/F+LP+LK\n"
"B/F+LP+LK\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"LP+LK\n"
"Close to Oponnent On Air LP+LK\n"
"LP+LK\n"
"(F)+LP+LK\n"
"HL/HL/HL\n"
"HL\n"
"HL/HL\n"
"HL\n"
"LP+LK\n"
"HL\n"
"HL\n"
"HL\n"
"L\n"
"L\n"
"L\n"
"LP+LK\n"
"HL\n"
"HL\n"
"HL\n"
"B+LP+LK\n"
"HL\n"
"HL\n"
"(Air) LP+LK\n"
"LP+LK\n"
"LP+LK\n"
"B+LP+LK\n"
"LP+LK\n"
"HL\n"
"HL\n"
"HL\n"
"LP+LK\n"
"(B/F)+LP+LK\n"
"H\n"
"F+LP+LK\n"
"HL\n"
"H/H\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL/HL\n"
"HL/HL/HL\n"
"HL/HL/HL\n"
"HL\n"
"HL\n"
"HL\n"
"HLx7\n"
"HL/HL/HL\n"
"HLx4\n"
"HLx3+HL/Lx3 Down\n"
"HL/HL/HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"H\n"
"H\n"
"HL\n"
"HL\n"
"HL\n"
"L\n"
"H\n"
"H\n"
"HL\n"
"Impossible\n"
"HL\n"
"H\n"
"HL\n"
"HL\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"HL\n"
"HL\n"
"HL\n"
"H\n"
"HL\n"
"HL\n"
"HL\n"
"L\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"H\n"
"H\n"
"H\n"
"H\n"
"HL\n"
"H\n"
"HL\n"
"Impossible\n"
"HL\n"
"HL\n"
"HL\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"HL\n"
"HL/HL\n"
"HL\n"
"H\n"
"HL\n"
"HL\n"
"H\n"
"H\n"
"H\n"
"HL\n"
"H\n"
"HL\n"
"L\n"
"H\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"H\n"
"HL\n"
"HL\n"
"H\n"
"H\n"
"H\n"
"HL/HL\n"
"HL\n"
"-\n"
"HL\n"
"H\n"
"H\n"
"HL\n"
"HL\n"
"HL/HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"Impossible\n"
"Impossible\n"
"Impossible\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"L\n"
"L\n"
"L\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"HL\n"
"L\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"L\n"
"L\n"
"L\n"
"L\n"
"HLx1~5\n"
"HLx1~5\n"
"HLx1~5\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"L\n"
"L\n"
"L\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"Impossible\n"
"HL\n"
"H\n"
"H\n"
"H\n"
"HL\n"
"HL\n"
"Impossible\n"
"Impossible\n"
"Impossible\n"
"Impossible\n"
"Impossible\n"
"Impossible\n"
"H\n"
"H\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"L\n"
"L\n"
"L\n"
"L\n"
"HL/HL/HL\n"
"HL/HL\n"
"Impossible\n"
"Impossible\n"
"Impossible\n"
"HL\n"
"Impossible\n"
"Impossible\n"
"Impossible\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"Hx2\n"
"HL\n"
"Hx2\n"
"HL\n"
"HL\n"
"HL\n"
"H\n"
"HLx4\n"
"HL\n"
"HL\n"
"HLx3\n"
"HL\n"
"L/HL\n"
"HL/HL\n"
"HL\n"
"H\n"
"HLx2\n"
"HL/HL\n"
"HL/HL\n"
"HL/HL\n"
"HL/HL\n"
"HL/HL\n"
"HL/HL\n"
"HL\n"
"HLx2\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"H/H\n"
"H\n"
"HL/HL\n"
"HL/HL/HL\n"
"HL\n"
"HL\n"
"HL/HL/HL\n"
"HL/H\n"
"L\n"
"HL/HL\n"
"HL\n"
"H\n"
"H\n"
"H(far) or L(close)\n"
"H\n"
"HLx2\n"
"HL\n"
"HL\n"
"HL\n"
"-\n"
"HL\n"
"HL/HL/HL\n"
"HL/HL/HL\n"
"H\n"
"HL/HL/HL/HL\n"
"HL/HL/HL/HL/HL\n"
"H\n"
"HL/HL/HL\n"
"HL\n"
"HL/HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"H/H\n"
"H/H\n"
"H/H\n"
"H\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"H\n"
"HL\n"
"HL\n"
"H\n"
"H\n"
"H\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"H\n"
"HL/HL/HL/HL\n"
"HL/HL/HL/HL/HL\n"
"HL/HL\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"-\n"
"HL\n"
"HL\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"L\n"
"HL/HL/HL/HL\n"
"-\n"
"H\n"
"HLx4\n"
"H\n"
"H\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"H/H\n"
"H/H\n"
"H/H\n"
"Lx2\n"
"Lx4\n"
"Lx2\n"
"HL\n"
"HL\n"
"HL/HL\n"
"H/L\n"
"-\n"
"-\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"L\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"L\n"
"L\n"
"L\n"
"L\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL/HL\n"
"H\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"H\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"-\n"
"-\n"
"HL\n"
"HL/H/H\n"
"HL\n"
"H\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"H/H\n"
"H\n"
"HLx2\n"
"HLx1~5\n"
"HL/HL/HL\n"
"HL/HL\n"
"HL/HL\n"
"HL/HL\n"
"HL/HL\n"
"HL\n"
"H\n"
"HL/H/H\n"
"-\n"
"HL\n"
"Lx5\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"L\n"
"HL\n"
"HL\n"
"HL\n"
"H\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"HL\n"
"HLx2\n"
"H\n"
"HL\n"
"HL\n"
"H\n"
"-\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HLx2\n"
"HLx2\n"
"HLx2\n"
"HLx3\n"
"HLx3\n"
"HLx3\n"
"-\n"
"-\n"
"-\n"
"HL\n"
"HL\n"
"L\n"
"HL\n"
"HL\n"
"HL/HL/HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL/HL\n"
"HL\n"
"HL\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"HL/H/H\n"
"HL\n"
"HL\n"
"HL\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"H\n"
"HL\n"
"HL\n"
"HL\n"
"HLx2\n"
"HL/HL/HL\n"
"HLx2\n"
"HL\n"
"HLx2\n"
"HL/HL\n"
"HL\n"
"HLx2\n"
"Hx3\n"
"HL\n"
"H\n"
"H\n"
"H\n"
"-\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL/HL/HL\n"
"HL\n"
"HL\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"H/H\n"
"HL\n"
"HL\n"
"HLx2\n"
"L\n"
"L\n"
"HL\n"
"H\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"HL\n"
"L\n"
"H\n"
"H\n"
"H\n"
"H\n"
"HL\n"
"HL\n"
"HL\n"
"HLx2\n"
"HL\n"
"HL\n"
"H\n"
"Impossible\n"
"HL\n"
"H\n"
"H\n"
"H\n"
"HLx2\n"
"H\n"
"H\n"
"HL\n"
"HL\n"
"HL\n"
"HL\n"
"H\n"
"HL\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"H\n"
"HL\n"
"H\n"
"H\n"
"H\n"
"-\n"
"H\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n")
matches = re.finditer(regex, test_str, re.MULTILINE | re.IGNORECASE)
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