# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"\-*?\n(\d{1,2}(?:\s+[+-]?\d.*?)+)?\n\w+.*?([+-]?\d+\.\d+)\n\w.*?\n\w+\s(\d+).*?\n\w.*\n"
test_str = ("--------------------------------------------------------\n"
"6 0.934039 1.910373 -0.007356\n"
"6 0.522681 1.025902 1.132490\n"
"6 1.295895 0.175184 1.887754\n"
"6 2.745917 -0.059133 1.663889\n"
"6 3.251755 -1.317777 1.620723\n"
"6 2.354786 -2.503163 1.659226\n"
"6 2.500165 -3.540741 2.548878\n"
"16 1.200827 -4.674482 2.398451\n"
"6 0.450003 -3.761272 1.124048\n"
"6 1.191704 -2.653037 0.838883\n"
"1 0.889391 -1.914706 0.104995\n"
"6 -0.831020 -4.156701 0.527821\n"
"6 -1.110322 -3.881221 -0.814127\n"
"6 -2.349055 -4.235426 -1.332810\n"
"7 -3.309523 -4.841208 -0.630339\n"
"6 -3.035523 -5.105663 0.648864\n"
"6 -1.833017 -4.789011 1.269474\n"
"1 -1.692631 -5.008941 2.323469\n"
"1 -3.826405 -5.592591 1.215268\n"
"1 -2.579432 -4.028326 -2.375778\n"
"1 -0.365461 -3.412291 -1.448955\n"
"6 3.573349 -3.754217 3.574993\n"
"1 3.816975 -2.812111 4.074804\n"
"1 3.260231 -4.473156 4.337010\n"
"1 4.494421 -4.124194 3.111155\n"
"6 4.710061 -1.617156 1.557050\n"
"6 5.623546 -1.003416 2.421004\n"
"6 6.974181 -1.326012 2.370518\n"
"6 7.436595 -2.269579 1.456291\n"
"6 6.535520 -2.894414 0.598497\n"
"6 5.182590 -2.576469 0.655016\n"
"1 4.479434 -3.078256 -0.004163\n"
"1 6.885058 -3.634965 -0.114866\n"
"1 8.492504 -2.519869 1.416345\n"
"1 7.667827 -0.841306 3.051107\n"
"1 5.267975 -0.268736 3.136940\n"
"6 3.580944 1.164538 1.503126\n"
"6 4.497172 1.300372 0.454818\n"
"6 5.240591 2.465784 0.310519\n"
"6 5.081537 3.515835 1.211519\n"
"6 4.166656 3.395074 2.253939\n"
"6 3.418260 2.231401 2.393481\n"
"1 2.692677 2.145384 3.197718\n"
"1 4.033033 4.209217 2.960243\n"
"1 5.661476 4.426693 1.096865\n"
"1 5.945953 2.554610 -0.510417\n"
"1 4.622653 0.485776 -0.251950\n"
"6 0.528985 -0.506746 2.884231\n"
"6 -0.800876 -0.209971 2.864388\n"
"16 -1.134679 0.961768 1.625169\n"
"6 -1.858335 -0.812159 3.682689\n"
"6 -1.740268 -2.136749 4.118466\n"
"6 -2.752842 -2.684280 4.894687\n"
"7 -3.862544 -2.030644 5.248979\n"
"6 -3.974818 -0.772056 4.819134\n"
"6 -3.016393 -0.122197 4.049880\n"
"1 -3.167697 0.912109 3.755521\n"
"1 -4.882415 -0.247888 5.110965\n"
"1 -2.672356 -3.711555 5.245040\n"
"1 -0.881625 -2.737495 3.833528\n"
"1 0.964846 -1.208304 3.585910\n"
"1 0.076921 2.185394 -0.628553\n"
"1 1.403779 2.830811 0.357050\n"
"1 1.665791 1.402320 -0.641683\n"
"Energy (Hartree) = -2216.64927779\n"
"Step: 34\n"
"Scan 1 out of 73\n"
"Converged(Max Force, RMS Force, Max Disp, RMS Disp): YES, YES, NO, YES\n"
"--------------------------------------------------------\n\n"
"--------------------------------------------------------\n"
"6 0.934062 1.911021 -0.006793\n"
"6 0.522693 1.026243 1.132808\n"
"6 1.295849 0.175204 1.887786\n"
"6 2.745849 -0.059151 1.663825\n"
"6 3.251670 -1.317799 1.620645\n"
"6 2.354637 -2.503134 1.659254\n"
"6 2.499913 -3.540512 2.549163\n"
"16 1.200720 -4.674404 2.398679\n"
"6 0.450032 -3.761466 1.124001\n"
"6 1.191706 -2.653228 0.838749\n"
"1 0.889499 -1.915053 0.104660\n"
"6 -0.830799 -4.157197 0.527556\n"
"6 -1.109977 -3.881704 -0.814420\n"
"6 -2.348529 -4.236224 -1.333319\n"
"7 -3.308924 -4.842349 -0.631043\n"
"6 -3.035027 -5.106853 0.648170\n"
"6 -1.832715 -4.789884 1.268992\n"
"1 -1.692398 -5.009943 2.322969\n"
"1 -3.825839 -5.594087 1.214409\n"
"1 -2.578819 -4.029095 -2.376300\n"
"1 -0.365153 -3.412510 -1.449097\n"
"6 3.572924 -3.753599 3.575540\n"
"1 3.816308 -2.811319 4.075158\n"
"1 3.259759 -4.472389 4.337671\n"
"1 4.494142 -4.123544 3.111975\n"
"6 4.709955 -1.617231 1.556911\n"
"6 5.623512 -1.003434 2.420751\n"
"6 6.974133 -1.326076 2.370222\n"
"6 7.436469 -2.269740 1.456057\n"
"6 6.535326 -2.894639 0.598379\n"
"6 5.182409 -2.576651 0.654945\n"
"1 4.479201 -3.078478 -0.004148\n"
"1 6.884808 -3.635261 -0.114937\n"
"1 8.492367 -2.520070 1.416076\n"
"1 7.667829 -0.841314 3.050721\n"
"1 5.268008 -0.268672 3.136635\n"
"6 3.580909 1.164495 1.503041\n"
"6 4.497111 1.300286 0.454710\n"
"6 5.240549 2.465680 0.310363\n"
"6 5.081547 3.515754 1.211345\n"
"6 4.166716 3.395021 2.253815\n"
"6 3.418302 2.231369 2.393405\n"
"1 2.692762 2.145371 3.197682\n"
"1 4.033146 4.209176 2.960116\n"
"1 5.661485 4.426605 1.096636\n"
"1 5.945883 2.554473 -0.510601\n"
"1 4.622556 0.485666 -0.252039\n"
"6 0.528927 -0.506827 2.884183\n"
"6 -0.800849 -0.209681 2.864659\n"
"16 -1.134600 0.962406 1.625752\n"
"6 -1.858353 -0.811785 3.682977\n"
"6 -1.740809 -2.136677 4.117983\n"
"6 -2.753416 -2.684132 4.894214\n"
"7 -3.862669 -2.030122 5.249222\n"
"6 -3.974426 -0.771225 4.820153\n"
"6 -3.015920 -0.121422 4.050946\n"
"1 -3.166775 0.913141 3.757259\n"
"1 -4.881643 -0.246746 5.112609\n"
"1 -2.673367 -3.711662 5.243914\n"
"1 -0.882533 -2.737672 3.832462\n"
"1 0.964690 -1.208688 3.585621\n"
"1 0.076974 2.186246 -0.627940\n"
"1 1.403854 2.831315 0.357930\n"
"1 1.665819 1.403131 -0.641235\n"
"Energy (Hartree) = -2216.64927781\n"
"Step: 35\n"
"Scan 1 out of 73\n"
"Converged(Max Force, RMS Force, Max Disp, RMS Disp): YES, YES, YES, YES\n"
"Optimized Parameters for Coordinate Value: 48.7864\n"
"--------------------------------------------------------\n\n"
"--------------------------------------------------------\n"
"6 0.928653 1.914728 -0.015952\n"
"6 0.523104 1.029664 1.125513\n"
"6 1.299323 0.175435 1.873723\n"
"6 2.746979 -0.062752 1.638872\n"
"6 3.250582 -1.322711 1.610272\n"
"6 2.350949 -2.505931 1.653003\n"
"6 2.487964 -3.535693 2.553022\n"
"16 1.187646 -4.668406 2.403419\n"
"6 0.447689 -3.765331 1.115501\n"
"6 1.193508 -2.661056 0.825700\n"
"1 0.897892 -1.928805 0.083033\n"
"6 -0.829701 -4.163896 0.513583\n"
"6 -1.098964 -3.899654 -0.832683\n"
"6 -2.334534 -4.256414 -1.357129\n"
"7 -3.300974 -4.854584 -0.656318\n"
"6 -3.036531 -5.108382 0.627053\n"
"6 -1.837984 -4.788211 1.253491\n"
"1 -1.705454 -4.999308 2.310312\n"
"1 -3.832212 -5.589178 1.191978\n"
"1 -2.557135 -4.057999 -2.403474\n"
"1 -0.348825 -3.437415 -1.466208\n"
"6 3.553334 -3.741710 3.588769\n"
"1 3.794918 -2.795527 4.081850\n"
"1 3.233495 -4.453260 4.354918\n"
"1 4.477112 -4.117327 3.134952\n"
"6 4.708676 -1.625521 1.559405\n"
"6 5.617384 -1.005953 2.424241\n"
"6 6.967681 -1.331651 2.386026\n"
"6 7.434526 -2.284193 1.483422\n"
"6 6.538165 -2.914834 0.624932\n"
"6 5.185521 -2.593731 0.669206\n"
"1 4.485944 -3.099951 0.009606\n"
"1 6.891156 -3.662361 -0.079406\n"
"1 8.490177 -2.536916 1.453052\n"
"1 7.657559 -0.842289 3.067116\n"
"1 5.258339 -0.264251 3.131155\n"
"6 3.588296 1.158822 1.495804\n"
"6 4.455584 1.334979 0.412017\n"
"6 5.190024 2.506923 0.274817\n"
"6 5.065591 3.527255 1.214482\n"
"6 4.191377 3.371568 2.286682\n"
"6 3.451948 2.201349 2.419198\n"
"1 2.755016 2.090210 3.245500\n"
"1 4.081099 4.164280 3.020955\n"
"1 5.637641 4.443718 1.104935\n"
"1 5.859723 2.624932 -0.572054\n"
"1 4.551226 0.545487 -0.327323\n"
"6 0.537765 -0.505652 2.874875\n"
"6 -0.791246 -0.204606 2.865525\n"
"16 -1.130701 0.970006 1.630565\n"
"6 -1.844454 -0.804660 3.690867\n"
"6 -1.727716 -2.130536 4.123087\n"
"6 -2.736173 -2.676023 4.906078\n"
"7 -3.840730 -2.019138 5.270315\n"
"6 -3.951832 -0.759281 4.843904\n"
"6 -2.997115 -0.111294 4.068471\n"
"1 -3.146985 0.924153 3.777407\n"
"1 -4.855222 -0.232457 5.143904\n"
"1 -2.656671 -3.704306 5.253685\n"
"1 -0.873433 -2.733722 3.830294\n"
"1 0.976622 -1.209660 3.572222\n"
"1 0.067886 2.192910 -0.630666\n"
"1 1.403422 2.833365 0.346506\n"
"1 1.654564 1.405702 -0.656173\n"
"Energy (Hartree) = -2216.64908578\n"
"Step: 1\n"
"Scan 2 out of 73\n"
"Converged(Max Force, RMS Force, Max Disp, RMS Disp): NO, YES, NO, NO\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