Пустые подмаски в регулярном выражении
Реализовать правило: "Пустые подмаски в регулярном выражении не несут смылса, если на них нет обратных ссылок и условных подмасок"
Comments (11)
-
reporter -
reporter Изменить номера обратных ссылок на оставшиеся подмаски, если они есть
-
repo owner И ссылки из условных подмасок тоже.
-
reporter Номера обратных ссылок на оставшиеся подмаски теперь меняются
-
repo owner 1) Это правило конфликтует с правилом преобразования подвыражений в группировки, т.е. на a()b будут выданы два сообщения - одно рекомендует в ab другое в a(?:)b - я думаю что второй вариант должен исключаться из списка правил при наличии первого.
2)У меня применение этого правила приводит к исчезновению оставшихся обратных ссылок из регекса. Например ()av()\2 становится av() - что может приводить к ошибкам. Например (()cd|)av()\1 преобразуется в (cd|)av() Это не похоже на "Номера обратных ссылок на оставшиеся подмаски теперь меняются"
-
repo owner 3) Работа по условным подмаскам тоже не проведена - в регексе (()cd|)a()v(?(2)d|e) она предлагает удалить вторую подмаску несмотря на наличие ссылающейся на нее условной подмаски.
4) Обратная ссылка в регексе это не reciprocal link а backreference, почитайте pcre.org/pcre.txt на досуге - это вообще идеальный справочников по перл-совместимым регексам, и с терминологией познакомитесь...
-
reporter 2) очень странно, на edu.vstu.ru ничего не трогал, там не работает, у меня локально работает. перезалью - перепроверю 4) по глупости не поправил во всех описаниях строки, где-то заменял это на backreference. исправлено
-
reporter 2) перезалил. очень странно - у меня локально работает, на сервере не работает. завтра утром разберусь
-
reporter 2) теперь и на сервере работает
-
reporter 1,3 и 4 готово. Также удаляются и ненужне подмаски, например "(abc)d".
-
repo owner 5) Это правило все еще называет ненужные подмаски пустыми. Это надо отдельно для каждого правила писать?
1,2,3 и 4 вроде готово.
- Log in to comment
Осталось учесть случай с условными подмасками