# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"(?ms)^AELIST.*?(?=^[A-Z]|\Z)"
test_str = ("AELIST 1 5159 5160 7007 7008 7015 7016 7023+ \n"
"+ 7024 7031 7032 7039 7040 7047 7048 7055+ \n"
"+ 7056 7063 7064 7071 7072 7079 7080 7087+ \n"
"+ 7088 7095 7096 7103 7104 7111 7112 7119+ \n"
"+ 7120 7127 7128 7135 7136 7143 7144 7151+ \n"
"+ 7152 7159 7160 7167 7168 7175 7176 7183+ \n"
"+ 7184 7191 7192 7199 7200 7207 7208 7215+ \n"
"+ 7216 7223 7224 7231 7232 \n"
"SET1 2 6159 6160 9007 9008 9015 9016 9023+ \n"
"+ 9024 9031 9032 9039 9040 9047 9048 9055+ \n"
"+ 9056 9063 9064 9071 9072 9079 9080 9087+ \n"
"+ 9088 9095 9096 9103 9104 9111 9112 9119+ \n"
"+ 9120 9127 9128 9135 9136 9143 9144 9151+ \n"
"+ 9152 9159 9160 \n"
"AELIST 5 11017 11018 11023 11024 11029 11030 11035+ \n"
"+ 11036 11041 11042 11047 11048 11053 11054 11059+ \n"
"+ 11060 11065 11066 11071 11072 11077 11078 11083+ \n"
"+ 11084 11089 11090 11095 11096 11101 11102 11107+ ")
matches = re.finditer(regex, test_str)
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