# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"([\,\s]*)(Ste |Ste. )"
test_str = ("12 Watershore Circle\n"
"825 Stewart Street\n"
"820 N Lincoln Way\n"
"9235 Bella Vista Way\n"
"P.O. Box 4438\n"
"9936 Stone Oak Way\n"
"599 Hamstead Drive\n"
"3941 Park Drive Ste 20 #147\n"
"3609 Bradshaw RD,ste H #107\n"
"7909 Walerga Road, Ste. 112, PMB 108\n\n\n"
"Options I've tried for what I want:\n"
"([\\,\\s]*)(Ste |Ste. )\n"
"([\\,\\s]+)(Ste |Ste. )\n"
"(\\,*[\\W]Ste[\\W]|\\,*[\\W]Ste\\.[\\W])\n\n"
"What the live results on my webpage seem to think these mean:\n"
"(\\,*[\\w]Ste[\\w]|\\,*[\\w]Ste\\.[\\w])\n"
"or\n"
"([\\,\\s]*)(Ste|Ste\\.)")
matches = re.finditer(regex, test_str, re.IGNORECASE)
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