# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"^(?P<Street>(?:[A-Za-z\d]+\h)+)\h{2,}(?P<LAT>-?\d*\.\d+)\h{2,}(?P<LON>-?\d*\.\d+)$"
test_str = ("A Kriel Street -25.69664263 28.41030434\n"
"Abraham Mogopodi Avenue -25.71338241 28.37033247\n"
"Absalome Street -25.70997386 28.3568847\n"
"Alan Paton Street -25.72122505 28.42021664\n"
"Alfred Nzo Crescent -25.6882444 28.41519928\n"
"Annah Mabusela Street -25.70656941 28.34339845\n"
"Anton Lembede Street -25.71813448 28.41874969\n"
"Aphane Nhlapo Street -25.7208474 28.38598257\n"
"Apple Close -25.71151327 28.38914898\n"
"Areyeng Street -25.72404151 28.38545561\n"
"Aseletho Street -25.71910848 28.41628606\n"
"Azikwelwa Street -25.70616386 28.40821879\n"
"Azondo Street -25.69615534 28.41117811\n"
"B Z Ndlazi Street -25.71074853 28.37073878\n"
"Badanile Avenue -25.71883255 28.42320088\n"
"Bahula Street -25.70728106 28.35488834\n"
"Baloyi Close -25.72553726 28.38641741\n"
"Bana Street -25.70942133 28.40631067\n"
"Banana Close -25.71194649 28.39090203")
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