import re

pattern = r"(?P<date>\d{2}/\d{2})\s+(?P<desc>\w[\w ]*)(?P<expense>\$[\d.,]*)\s{2}(?P<deposit>\d[\d.,]*)\s.*(?P<desc_more>(?:\n(?!\d+\/\d|continued\b|Page\s+\d).*)*)"

s = ("  0  0  $12,345.67 \n"
     "08/27  DEBIT CARD PURCHASE XXXXXX 5541XXXXXX  $1.23  0  $123,456.78\n"
     "RACETRAC467 00004671 PLEASANTVILLEPA\n"
     "08/27  BANK FUNDS TRANSFER DB  $45.67  0  $124,816.32\n"
     "TO SMITH,JOHN\n"
     "SAVINGS #0001, CONF# 8675309\n"
     "continued on next page>>>\n"
     " 987654-3210\n"
     "Page 1 of 11\n"
     "07/27  DEBIT CARD PURCHASE XXXXXX 6541XXXXXX  $2.23  0  $223,456.78")

matches = re.finditer(pattern, s)

for _, match in enumerate(matches):
    d = match.groupdict()
    d.update({'desc': re.sub(r"[^\S\n]*\n", " " , match.groupdict().get('desc') + match.groupdict().get('desc_more'))})
    del d["desc_more"]
    print(d)