import re
regex = re.compile(r"(?=\b(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec|\d{4}|\d{1,2}))\w*[\t\ \\\/\.\,\;\:\-\+\_]+(\d{1,2}|jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\w*[\t\ \\\/\.\,\;\:\-\+\_]+(\d{4}|\d{1,2})\w*\b", flags=re.IGNORECASE)
test_str = (" january 23rd 2011\n"
"2004 / 03 / 12\n"
" 1/12/2014 16-12-04\n"
" feb 18 1970\n"
" 2014.2.24\n"
"12-12-12\n"
"2nd 12 2004\n\n"
"1st Feb 2008\n\n"
"2001-09-11\n"
"2001 Sep 11\n\n"
"sep-jan 2000\n\n\n\n"
"mar\n\n")
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