# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"^ {3,}-?\d.*(?:\r?\n {3,}-?\d.*)*"
test_str = ("ALA\n"
" CCTOOLS-0424210918\n\n"
" 13 12 0 0 1 0 0 0 0 0999 V2000\n"
" 2.2810 26.2130 12.8040 N 0 0 0 0 0\n"
" 1.1690 26.9420 13.4110 C 0 0 0 0 0\n"
" 1.5390 28.3440 13.8740 C 0 0 0 0 0\n"
" 2.7090 28.6470 14.1140 O 0 0 0 0 0\n"
" 0.6010 26.1430 14.5740 C 0 0 0 0 0\n"
" 0.5230 29.1940 13.9970 O 0 0 0 0 0\n"
" 2.0330 25.2730 12.4930 H 0 0 0 0 0\n"
" 3.0800 26.1840 13.4360 H 0 0 0 0 0\n"
" 0.3990 27.0670 12.6130 H 0 0 0 0 0\n"
" -0.2470 26.6990 15.0370 H 0 0 0 0 0\n"
" 0.3080 25.1100 14.2700 H 0 0 0 0 0\n"
" 1.3840 25.8760 15.3210 H 0 0 0 0 0\n"
" 0.7530 30.0690 14.2860 H 0 0 0 0 0\n"
" 1 2 1 0 0 0\n"
" 1 7 1 0 0 0\n"
" 1 8 1 0 0 0\n"
" 2 3 1 0 0 0\n"
" 2 5 1 0 0 0\n"
" 2 9 1 0 0 0\n"
" 3 4 2 0 0 0\n"
" 3 6 1 0 0 0\n"
" 5 10 1 0 0 0\n"
" 5 11 1 0 0 0\n"
" 5 12 1 0 0 0\n"
" 6 13 1 0 0 0\n"
"M END\n"
"$$$$")
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