Пустые подмаски в регулярном выражении

Issue #371 new
Григорий Терехов created an issue

Реализовать правило: "Пустые подмаски в регулярном выражении не несут смылса, если на них нет обратных ссылок и условных подмасок"

Comments (11)

  1. Григорий Терехов reporter

    Осталось учесть случай с условными подмасками

  2. Григорий Терехов reporter

    Изменить номера обратных ссылок на оставшиеся подмаски, если они есть

  3. Григорий Терехов reporter

    Номера обратных ссылок на оставшиеся подмаски теперь меняются

  4. Oleg Sychev repo owner

    1) Это правило конфликтует с правилом преобразования подвыражений в группировки, т.е. на a()b будут выданы два сообщения - одно рекомендует в ab другое в a(?:)b - я думаю что второй вариант должен исключаться из списка правил при наличии первого.

    2)У меня применение этого правила приводит к исчезновению оставшихся обратных ссылок из регекса. Например ()av()\2 становится av() - что может приводить к ошибкам. Например (()cd|)av()\1 преобразуется в (cd|)av() Это не похоже на "Номера обратных ссылок на оставшиеся подмаски теперь меняются"

  5. Oleg Sychev repo owner

    3) Работа по условным подмаскам тоже не проведена - в регексе (()cd|)a()v(?(2)d|e) она предлагает удалить вторую подмаску несмотря на наличие ссылающейся на нее условной подмаски.

    4) Обратная ссылка в регексе это не reciprocal link а backreference, почитайте pcre.org/pcre.txt на досуге - это вообще идеальный справочников по перл-совместимым регексам, и с терминологией познакомитесь...

  6. Григорий Терехов reporter

    2) очень странно, на edu.vstu.ru ничего не трогал, там не работает, у меня локально работает. перезалью - перепроверю 4) по глупости не поправил во всех описаниях строки, где-то заменял это на backreference. исправлено

  7. Григорий Терехов reporter

    2) перезалил. очень странно - у меня локально работает, на сервере не работает. завтра утром разберусь

  8. Григорий Терехов reporter

    1,3 и 4 готово. Также удаляются и ненужне подмаски, например "(abc)d".

  9. Oleg Sychev repo owner

    5) Это правило все еще называет ненужные подмаски пустыми. Это надо отдельно для каждого правила писать?

    1,2,3 и 4 вроде готово.

  10. Log in to comment