# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"(?<=\d{4}\-\d{2}\-\d{2}|\d{4}.\d{4}|\d{4}.\d{1}.\d{1}.\d{2}|\d{4}.\d{2}.\d{2}).*?(?=\d)"
test_str = (". FIRST BANK OF WIKI\n"
", 1425 JAMES ST, PO BOX 4000 CHEQUING ACCOUNT STATEMENT\n"
"VICTORIA BC V8X 3X4 1-800-555~5555 Page: 1 of 1\n"
"JOHN JONES I Sififi3331‘3311 Erma II EEK-111313010: I\n"
"1643 DUN DAS ST W APT 27 2003-10-09 to 200341-08 00005-\n"
"TORONTO ON M6K 1V2 123-4567\n"
"I sue II 1% 1::ng “W II um II I\n"
"2003-10-08 Previous balance 0.55 I\n"
"2003-10-14 Payroll Deposit - HOTEL 694.81 695.36\n"
"2003-10-14 Web Bill Payment - MASTERCARD 9685 200.00 495.36 \n"
"2003—1046 ATM Withdrawal - INTERAC 3990 21 .25 474.11 .\n"
"2003-10-16 Fees - lnterac 1 .50 472.61 I\n"
"2003-10-20 Interac Purchase - ELECTRONICS 1975 2.99 469.62 .\n"
"2003-10-21 Web Bill Payment - AMEX 3314 300.00 169.62\n"
"2003-1 0-22 ATM Withdrawal - FIRST BANK 0064 100.00 69.62 .\n"
"2003-10-23 lnterac Purchase - SUPERMARKET 1 559 29.08 40.54 I\n"
"2003-10-24 Interac Refund - ELECTRONICS 1975 2.99 43.53\n"
"2003-10-27 Telephone Bill Payment — VISA 2475 6.77 36.76 I\n"
"2003-1328 Payroll Deposit - HOTEL 694.81 731.57 .\n"
"2003-10~30 Web Funds Transfer - From SAVINGS 2620 50.00 781.57 I\n"
"2003-11-03 Pre-Auth. Payment - INSURANCE 33.55 748.02 .\n"
"2003-11-03 Cheque No. - 409 1 00.00 648.02\n"
"2003-11-06 Mortgage Payment 710.49 -62.47 .\n"
"2003-11-07 Fees - Overdraft 5.00 -67.47 I\n"
"2003-11-08 Fees - Monthly 5.00 -72.47\n"
"*** Totals m 1 ,515.63 1,442.61 I")
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