datetime – Date Detection with Python RegEx


its a practice project from “Automate the Boring stuff with Python” book. i am an intermediate level Python programmer and i tried to solve this problem with less code as possible. This code will not take any wrong date into consideration eg: 29-02-2002 will not be selected because 2002 is not a leap year and only leap years have 29th of feb. i did not add code to also detect dates with months written in words, i could do that too but i want to keep things simple for now and i also did not use pyperclip module to detect dates from copied text to clipboard because i dont want to confuse any beginner who also want to learn from watching my code.
I want master programmers to review my code and if their is another way possible to detect dates then please post your solutions. Also i would appreciate any advice and positive criticism, so i know where i am standing right now and what i need to improve. Thanks. Code is as follows:

import re


def date_detector(text):
    date_pattern = re.compile('''
    ((12)(0-9)|3(0-1)|0?(1-9))             # to detect days from 1 to 31
    ((./-))                                # to detect different separations
    (1(0-2)|0?(1-9))                       # to detect number of months
    ((./-))                                # to detect different seperations
    (2?1?(0-9)(0-9)(0-9))                  # to detect number of years from 1000-2999 years
     ''', re.VERBOSE)

    days = ()
    months = ()
    years = ()
    dates = ()
    for date in date_pattern.findall(text):
        days.append(int(date(0)))
        months.append(int(date(2)))
        years.append(int(date(4)))

    for num in range(len(days)):

    # appending dates in a list that dont need any filtering to detect wrong dates
        if months(num) not in (2, 4, 6, 9, 11):
            dates.append((days(num), months(num), years(num)))

    # detecting those dates with months that have only 30 days
        elif days(num) < 31 and months(num) in (4, 6, 9, 11):
            dates.append((days(num), months(num), years(num)))

    # filtering leap years with Feb months that have 29 days
        elif months(num) == 2 and days(num) == 29:
            if years(num) % 4 == 0:
                if years(num) % 100 == 0:
                    if years(num) % 400 == 0:
                        dates.append((days(num), months(num), years(num)))
                else:
                    dates.append((days(num), months(num), years(num)))

    # appending Feb dates that have less than 29 days
        elif months(num) == 2 and days(num) < 29:
            dates.append((days(num), months(num), years(num)))

    if len(dates) > 0:
        for date in dates:
            print(date)

data = ’30-06-2012, 31-12-2012, 15-02-2002, 29-02-2004, 29-02-2002, 31-02-2004, 31-06-2012′

date_detector(data)