# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"(?m)^([^\r\n]+)\s*\n([^\r\n]+)\s*\n([^\r\n]+):\s*([^\r\n]+)\s*\n([^\r\n]+):\s*([^\r\n]+)(?:\s*\n([^\r\n]+):\s*([^\r\n]+))?\s*\nDirections:\s*\n((?:.+\s*\n?)+?)(?=^[^\r\n]+\s*\n[^\r\n]+\s*\n[^\r\n]+:|\z)"
test_str = ("Bob's Diner\n"
"Reefer\n"
"Location: Mike's Beef Barn\n"
"Time: 1,584\n"
"Stop: Highway Hotel.\n"
"Directions:\n"
"Go south on Broadway.\n"
"Get on freeway 30 South. Exit Main St.\n"
"Go south on Main to Highway Hotel.\n"
"Go north on Main. Go east on Highway 15. Exit Market St.\n"
"1522 Market St.\n"
"Comfy Pillows and Mattresses\n"
"Dry Van\n"
"Location: Innovative Furniture\n"
"Time: 223\n"
"Directions:\n"
"Turn right and go to Seville Ave.\n"
"Turn left on St. Michael St.\n"
"Go to end at the Comfy Sign.\n"
"Washington County Construction\n"
"Low Boy\n"
"Location: Marble Quarry in Gainesville.\n"
"Time: 1,135\n"
"Stop: Mountainside Motel.\n"
"Directions:\n"
"Make a U-turn on Alameda Ave. and a right on Chantilly Lane.\n"
"Get on freeway 67 East.\n"
"Pass the Hospital and Exit Seward St.\n"
"Turn left on Coral St. to Mountainside Motel on right.\n"
"Exit motel and go east on Jefferson and then right on Belhaven.\n"
"Follow Joelle Ln. to Hwy 49.\n"
"Turn right at the Red Hill Junction. Go east on Harewood Rd.\n"
"Turn left on Blue Heron St.\n"
"8964 Red Rooster St.\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