import re
regex = re.compile(r"^(?P<Street>(?:[A-Za-z\d]+\h)+)\h{2,}(?P<LAT>-?\d*\.\d+)\h{2,}(?P<LON>-?\d*\.\d+)$", flags=re.MULTILINE)
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 = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
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