Совпадение ассертов в начале строки - is_match должно быть истинным или ложным?
Originally reported on Google Code with ID 77 ``` Есть серьезные подозрения что два фейла в юнит-тестах типа вопроса связаны с матчингом от НКА.
at [Z:\home\moodle\www\question\type\preg\simpletest\testquestion.php line 159] при индексах Array ( [0] => 0 [1] => -1 [2] => -1 [3] => -1 ) Array ( [0] => -1 [1] => -2 [2] => -2 [3] => -2 ) он ухитряется иметь is_match истинным.
at [Z:\home\moodle\www\question\type\preg\simpletest\testquestion.php line 278] тоже совпадения вроде как быть не должно.
Валерий, попробуйте разобраться что там происходит... ```
Reported by `oasychev` on 2011-12-13 10:44:41
Comments (7)
-
-
reporter ``` Разобраться с дальнейшей обработкой данных из матчера. ```
Reported by `oasychev` on 2011-12-13 13:14:58
-
reporter ``` Я понял в чем проблема: вопрос в режиме точного совпадения, поэтому реальное выражение начинается с ^ - она и дает is_match.
Мне это не нравится, т.к. дает "совпадение" там где реально ничего не совпало. ^ для is_match учитываться определенно не должна. Вопрос с \b спорный - незаякоренным оно даст совпадение с любой границей слова, заякоренное - если строка начинается со слова. Игнорировать сложные ассерты нельзя - возможны выражения чисто из ассертов...
У нас есть два варианта: 1) выставлять is_match только если совпал хотя бы один символ или сложный ассерт, но не простой ассерт - думаю что это легко сделать; 2) игнорировать только ^ при определении is_match, а \b учитывать...
Можем мы реализовать легко и надежно хотя бы 1) ? ^ выставляется автоматически в режиме точного совпадения, поэтому с ней надо разобраться обязательно и в первую очередь.... ```
Reported by `oasychev` on 2011-12-14 10:58:33
-
reporter ``` ВСЕМ АВТОРАМ МАТЧЕРОВ - срочно исправить...
Временное решение - выставлять is_match при наличии полного совпадения или ненулевой длины частичного совпадения. ```
Reported by `oasychev` on 2011-12-14 11:56:59
-
reporter ``` Дмитрий, кто обещал исправить к понедельнику ситуацию с is_match?! (и дописать тест на (?i:
Вы релиз задерживаете!!! А на западе Рождество скоро... ```
Reported by `oasychev` on 2011-12-19 13:18:15
-
Account Deleted ``` Я исправил ситуацию с is_match, выставляется точно в тру\фолсе в соответствии с вышеизложенным принципом (полное совпадение или частичное ненулевой длинны). Имеются провалы ДКА на тестах для других матчеров требующих изматч==тру при совпадении только крышечки. Тесты на регистронечувствительность установливаемую в группирове так же добавлены. Изменения в клоне. ```
Reported by `Xapuyc7` on 2011-12-19 17:57:24
-
reporter ``` Проблема с крышкой решена в основных матчерах. Спасибо. ```
Reported by `oasychev` on 2011-12-23 10:45:19 - Status changed: `Done`
- Log in to comment
``` Сделал кросс-тест регекс: Do ([cbr]at(s|)) eat ([cbr]at\2)\? строка: bat eat fat?
Результат: is_match = false Array ( [0] => 12 [1] => -1 [2] => -1 [3] => -1 ) Array ( [0] => 11 [1] => -2 [2] => -2 [3] => -2 )
Не похоже, что проблема в матчере ```
Reported by `vostreltsov` on 2011-12-13 12:08:45