import re
regex = re.compile(r"([a-zA-Z]+)[\s\-\.]+(\d{1,2})[\s\-\,]+(\d{4})")
test_str = ("04/20/2009; 04/20/09; 4/3/09 7/8/71\n"
"Mar-20-2009; Mar 20, 2009; March 20, 2009; Mar. 20, 2009; Mar 20 2009\n"
"20 Mar 2009; 20 March 2009; 20 Mar. 2009; 20 March, 2009\n"
"Mar 20th, 2009; Mar 21st, 2009; Mar 22nd, 2009\n"
"Feb 2009; Sep 2009; Oct 2010\n"
"6/2008; 12/2009\n"
"6/1998 Primary Care Doctor:\n"
"2009; 2010\n"
"(4/10/71)Score-1Audit C Score Current: 9/27/75. \n"
"1; 10/13/1976 Audit C Score,\n"
"4-13-82 Other Child Mental occasion 5/21/77.\n"
"1; 10/13/1976 Audit C\n"
"(1988-now)\n"
"B12 969 2007\n"
"Lab: B12 969 2007\n"
"Ely 708-810-7787 \n"
"February, 2010\n"
"URUGUAY September 1984.\n"
"7HH, April 1985 Hx of Outpatient\n"
"Venlafaxine 37.5mg daily: May, 2011: self-discontinued\n"
") Paxil (Jan 1978) : sedation\n"
"LFTs WNL (October 1996)Problems Opioid dependence\n"
"\"I wasn't getting anywhere\" (April 1988)Prior\n"
"Prozac 20 mg daily: February, 1995: self-discontinued\n"
"sLexapro (1988-now): Good response (anxiety)\n"
"pOct 2015 - Admitted to Gray\n"
"lNovember 1990 - NPCCHx of Outpatient Treatment: Yes")
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
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