import re
regex = re.compile(r"^(\w+(\-\w+)?)(\s)([A-Z]\.\s)*(\w+)(\s\w+)?\,((\(|1\-|\(1\-)*\d{3}(\)(\s)?|-|\s|\)\-)?\d{3}\-*\s?\d{4})\,(\w+)(\-\w+\-\w+)?(\s\w+$)?", flags=re.MULTILINE)
test_str = ("Kiayada D. Levy,(570)7924192,Sint-Laureins-Berchem\n"
"Gretchen F. Manning,(1-656)-285-0869,Spoleto\n"
"Ashton Richards,(974) 843-9297,Annapolis Royal\n"
"Demetrius J. Ferguson,1-906-206-4323,Rea\n"
"Blair Nelson,1-121-171-3665,Bertiolo\n"
"Cynthia J. Farley,632 691 2180,Moen\n"
"Nayda M. Lloyd,1-864-250-6977,Sarrev\n"
"Miranda Edith Sexton,1-597-689-8316,Shipshaw\n"
"Fulton Mays,(725)789-9517,Pierrefonds\n"
"Shea Kim,1-697-854-4139,Bihain\n"
"Emma-Mae Winters,1-137-630-5601,Gulfport\n"
"Inez W. Depew,1-833-470-5664,Johnstone\n"
"Darrel F. Key,1-878-918-2161,Olympia\n"
"Tobias L. Stephens,1-119-939-6704,Unnao\n"
"Elmo Pate,1-869-333-7341,Griesheim")
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