Ссылка на проблему: https://www.hackerrank.com/challenges/validating-credit-card-number/problem
Regexp работает нормально в онлайн-тестере регулярных выражений, но не работает, когда я использую re.match () из python. Для следующего условия это регулярное выражение не работает: В нем НЕ должно быть 4 или более последовательных повторяющихся цифр.
import re
test_case=int(input())
for _ in range(test_case):
print('Valid' if re.match("^(?!.*(\d)(-?\1){3})[456]{1}\d{3}[-]?\d{4}[-]?\d{4}[-]?\d{4}$",input()) is not None else "Invalid")
Например: - 5133-3367-8912-3456 В этом случае он дает «Нет совпадений» в онлайн-тестере регулярных выражений. Но в случае python3 с re.match возвращается объект сопоставления re.Match object; span = (0, 19), match = '5133-3367-8912-3456'
Так что для этого теста вышеупомянутой проблемы с хакерранком это печать «Действительный» вместо «Недействительный».