URL Валидация. Regex. Не работает корректно регулярное выражение

Пытаюсь решить задачу с Валидацией URL. ( https://acmp.ru/index.asp?main=task&id_task=870&ins=1 ) И так и этак крутил и подбирал регулярное выражение, но сайт при проверке кода , выдает что не проходит тесты. Пишу на Python. Подскажите куда двигаться...

#----------------------------------------------------------
import re


def validate_url(data):
    pattern = re.compile(r'^'
                         # [http://]
                         r'(http://)?'
                         # host
                         r'('
                         # prefix.doman
                         r'([\da-z_.]+\.[a-z]{2,3})'
                         r'|'
                         # IP
                         r'('
                         r'(((2[0-4]\d)|(25[0-5])|(1\d{2})|([1-9]\d)|(\d))\.){3}'
                         r'((2[0-4]\d)|(25[0-5])|(1\d{2})|([1-9]\d)|(\d))'
                         r')'
                         r'|'
                         # computer name
                         r'([\da-z_]+)'
                         r')'
                         # [:port]
                         r'(:((6[0-4]\d{3})|(65[0-4]\d{2})|(655[0-2]\d)|(6553[0-5])|([1-5]\d{4})|([1-9]\d{1,3})|(\d)))?'  
                         # [/path]
                         r'((/[\da-z_]+)+)?'
                         # [/file]
                         r'((/([\da-z_.])*)+)?'
                         r'$', re.IGNORECASE)
    if re.fullmatch(pattern, data):
        return True
    else:
        return False


def count_rows():
    file_txt = open('INPUT.txt', 'r')
    count = 0
    for _line in file_txt:
        rows = re.findall(r'\n', _line)
        if len(rows) > 0:
            count += 1
        else:
            count += 1
    file_txt.close()
    if count < 10000:
        return True
    else:
        return False


def check_txt(data):
    if len(data) > 1000:
        return False
    else:
        return True


def get_urls():
    file = open('INPUT.txt', 'r')
    output = open('OUTPUT.txt', 'w')
    if count_rows():
        for line in file:
            data = line.rstrip('\n')
            if validate_url(data) and check_txt(data):
                output.write('YES' + '\n')
            else:
                output.write('NO' + '\n')
        file.close()
        output.close()
        return True
    else:
        file.close()
        output.close()
        return False


get_urls()
#----------------------------------------------------------

Ответы (0 шт):