# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"^(?:\t| )*(?:#|%|;|//|--|REM|C|!) (?:#{64} (.*)|#{32} (.*)|#{16} (.*)|#{8} (.*)|#{4} (.*)|#{2} (.*))$"
test_str = ("Valid comments that start with \"#\":\n\n"
"# ################################################################ First Level\n"
"# ################################ Second Level\n"
"# ################ Third level\n"
"# ######## Fourth Level\n"
"# #### Fifth level\n"
"# ## Sixth level\n\n"
"Valid comments that start with different characters:\n\n"
"// ################################################################ 1st Level\n"
"; ################################ 2nd Level\n"
"REM ################ 3rd level\n"
"C ######## 4th Level\n"
"% #### 5th level\n"
"-- ## 6th level\n\n"
"Valid comments that start with spaces or tabs:\n"
" # ################################################################ 1st level\n"
" ; ################################ 2nd Level\n\n"
"Invalid comments:\n\n"
"################################################################ No initial character\n"
"; ################################################ Hashes not a power of 2\n"
"@ ################ Character not recognized\n"
"C ########No space after hashes\n"
"% %%%%%%%% No hashes\n"
". # #### Period before spaces\n"
" ;#### No space after character")
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