Решение на Регулярни изрази от Георги Стайков
Резултати
- 8 точки от тестове
- 0 бонус точки
- 8 точки общо
- 32 успешни тест(а)
- 7 неуспешни тест(а)
Код
Лог от изпълнението
....F...........F....FFF..FF........... ====================================================================== FAIL: test_does_not_filter_invalid_phone_numbers (test.PrivacyFilterTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "lib/language/python/runner.py", line 60, in thread raise it.exc_info[1] File "lib/language/python/runner.py", line 48, in run self.result = func(*args, **kwargs) File "/tmp/d20140513-11348-mdl0rt/test.py", line 86, in test_does_not_filter_invalid_phone_numbers self.assertEqual(filtered, solution.PrivacyFilter(text).filtered()) AssertionError: 'Reach me at: 0885123' != 'Reach me at: [PHONE]' - Reach me at: 0885123 + Reach me at: [PHONE] ====================================================================== FAIL: test_can_validate_more_complex_phone_numbers (test.ValidationsTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "lib/language/python/runner.py", line 60, in thread raise it.exc_info[1] File "lib/language/python/runner.py", line 48, in run self.result = func(*args, **kwargs) File "/tmp/d20140513-11348-mdl0rt/test.py", line 160, in test_can_validate_more_complex_phone_numbers self.assertIs(solution.Validations.is_phone(phone), valid) AssertionError: True is not False ====================================================================== FAIL: test_does_not_break_on_phones_in_multiline_strings (test.ValidationsTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "lib/language/python/runner.py", line 60, in thread raise it.exc_info[1] File "lib/language/python/runner.py", line 48, in run self.result = func(*args, **kwargs) File "/tmp/d20140513-11348-mdl0rt/test.py", line 163, in test_does_not_break_on_phones_in_multiline_strings self.assertFalse(solution.Validations.is_phone("0885123123\nwat?")) AssertionError: True is not false ====================================================================== FAIL: test_handles_multiline_strings_in_IP_validation_properly (test.ValidationsTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "lib/language/python/runner.py", line 60, in thread raise it.exc_info[1] File "lib/language/python/runner.py", line 48, in run self.result = func(*args, **kwargs) File "/tmp/d20140513-11348-mdl0rt/test.py", line 189, in test_handles_multiline_strings_in_IP_validation_properly self.assertFalse(solution.Validations.is_ip_address("8.8.8.8\n")) AssertionError: True is not false ====================================================================== FAIL: test_handles_multiline_strings_in_hostname_validation_properly (test.ValidationsTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "lib/language/python/runner.py", line 60, in thread raise it.exc_info[1] File "lib/language/python/runner.py", line 48, in run self.result = func(*args, **kwargs) File "/tmp/d20140513-11348-mdl0rt/test.py", line 179, in test_handles_multiline_strings_in_hostname_validation_properly self.assertFalse(solution.Validations.is_hostname("foo.com\n")) AssertionError: True is not false ====================================================================== FAIL: test_handles_newlines_in_date_validation (test.ValidationsTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "lib/language/python/runner.py", line 60, in thread raise it.exc_info[1] File "lib/language/python/runner.py", line 48, in run self.result = func(*args, **kwargs) File "/tmp/d20140513-11348-mdl0rt/test.py", line 259, in test_handles_newlines_in_date_validation self.assertFalse(solution.Validations.is_date("2012-11-19\n")) AssertionError: True is not false ====================================================================== FAIL: test_handles_newlines_in_time_and_datetime_validation (test.ValidationsTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "lib/language/python/runner.py", line 60, in thread raise it.exc_info[1] File "lib/language/python/runner.py", line 48, in run self.result = func(*args, **kwargs) File "/tmp/d20140513-11348-mdl0rt/test.py", line 288, in test_handles_newlines_in_time_and_datetime_validation self.assertFalse(solution.Validations.is_time("12:01:01\n")) AssertionError: True is not false ---------------------------------------------------------------------- Ran 39 tests in 0.057s FAILED (failures=7)
История (3 версии и 2 коментара)
Георги обнови решението на 21.04.2014 01:51 (преди над 10 години)
Валидаторите ти се дънят при един специален случай. Помисли дали \b
няма да ти реши проблема
Не разбирам какво имаш в предвид. Нали на валидаторите се подава някакъв стринг и валидаторът трябва да прецени дали стринга е валидно Х (нещо) или не е валидно Х ? Какъв е този специален случай и защо ми е \b след като стринга или е валиден телефон или не е валиден телефон (примерно) и няма думи преди и след него,защо ми е разделител за думи (\b) ? Или идеята ти е че на валидаторите може да се подава цяло изречение и валидатора да преценя дали в изречението има валиден телефон ? Това не ми се струва правилно, защото тъй като валидатора връща True/False ние трябва да го питаме за конкретно нещо не за цяло изречение. И като цяло името на валидатора говори за това - подадения стринг телефон ли е или не. А не подаденото изречение телефон ли е или не, защото най-малкото звучи нелогично ?
П.П Тоест идеята е регулярния ми израз за телефон да стане -> \bрегулярният ми израз за телефон\b ?
П.П2 А иначе като цяло регулярните ми изрази ОК ли са ?