Совпадение ассертов в начале строки - is_match должно быть истинным или ложным?

Issue #77 closed
Oleg Sychev repo owner created an issue

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)

  1. Valeriy Streltsov

    ``` Сделал кросс-тест регекс: 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

  2. Oleg Sychev reporter

    ``` Разобраться с дальнейшей обработкой данных из матчера. ```

    Reported by `oasychev` on 2011-12-13 13:14:58

  3. Oleg Sychev reporter

    ``` Я понял в чем проблема: вопрос в режиме точного совпадения, поэтому реальное выражение начинается с ^ - она и дает is_match.

    Мне это не нравится, т.к. дает "совпадение" там где реально ничего не совпало. ^ для is_match учитываться определенно не должна. Вопрос с \b спорный - незаякоренным оно даст совпадение с любой границей слова, заякоренное - если строка начинается со слова. Игнорировать сложные ассерты нельзя - возможны выражения чисто из ассертов...

    У нас есть два варианта: 1) выставлять is_match только если совпал хотя бы один символ или сложный ассерт, но не простой ассерт - думаю что это легко сделать; 2) игнорировать только ^ при определении is_match, а \b учитывать...

    Можем мы реализовать легко и надежно хотя бы 1) ? ^ выставляется автоматически в режиме точного совпадения, поэтому с ней надо разобраться обязательно и в первую очередь.... ```

    Reported by `oasychev` on 2011-12-14 10:58:33

  4. Oleg Sychev reporter

    ``` ВСЕМ АВТОРАМ МАТЧЕРОВ - срочно исправить...

    Временное решение - выставлять is_match при наличии полного совпадения или ненулевой длины частичного совпадения. ```

    Reported by `oasychev` on 2011-12-14 11:56:59

  5. Oleg Sychev reporter

    ``` Дмитрий, кто обещал исправить к понедельнику ситуацию с is_match?! (и дописать тест на (?i:

    Вы релиз задерживаете!!! А на западе Рождество скоро... ```

    Reported by `oasychev` on 2011-12-19 13:18:15

  6. Former user Account Deleted

    ``` Я исправил ситуацию с is_match, выставляется точно в тру\фолсе в соответствии с вышеизложенным принципом (полное совпадение или частичное ненулевой длинны). Имеются провалы ДКА на тестах для других матчеров требующих изматч==тру при совпадении только крышечки. Тесты на регистронечувствительность установливаемую в группирове так же добавлены. Изменения в клоне. ```

    Reported by `Xapuyc7` on 2011-12-19 17:57:24

  7. Oleg Sychev reporter

    ``` Проблема с крышкой решена в основных матчерах. Спасибо. ```

    Reported by `oasychev` on 2011-12-23 10:45:19 - Status changed: `Done`

  8. Log in to comment