# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"(?:^|\D)([790]\d{1,4})(?!\d)"
test_str = ("5494398 70008 'order # 5494398 Product#: 70008\n"
"5001447452 ' should be ignored\n"
"6415366 OSW SHIP 70052 'order # 6415366 Product#: 70052\n"
"6567598y7058 Nov 20 'order # 6567598 Product#: 7058\n"
"OSW SHIP 70054 RH STRONGBACKS 'order # N/A Product#: 70054\n"
"OSW HS 70052 70053 'order # N/A Product#: 70008\n"
"6511534 04450 'order # 6511534 Product#:either 04450 or 0445 (this is only case)\n"
"6511538 0046 'order # 6511538 Product#: 0046\n"
"0046 6387125 'order # 6387125 Product#: 0046\n"
"OSW 70032 'order # N/A Product#: 70032\n"
"OSW HEX Blots 046 047 048 049 'order # N/A Product#: 064 & 047 & 048 & 049 (4 matches)")
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