Альтернатива с одиночными символами

Issue #374 resolved
Григорий Терехов created an issue

Реализовать правило: "Альтернатива с одиночными символами жквивалента символьному классу"

Comments (20)

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

    Реализовано без учета нормализации символьного класса. Т.е. например "a|b|[c-e]" => "[a-e]". Сейчас работает для "b|a|[c]" => "[bac]". Нужно ли упорядочивать символы в символьном классе?

  2. Oleg Sychev repo owner

    Упорядочиванием символьного класса может заниматься отдельное правило, посвященное символьному классу. Вместе с его общей нормализацией.

    Здесь достаточно чтобы работало "a|b|[c-e]" => "[abc-e]"

  3. Oleg Sychev repo owner

    По сравнению с 373 здесь обратная проблема - не подставляются необходимые бекслеши. Т.е. a|-|e становится [a-e] что очень далеко от правды...

  4. Oleg Sychev repo owner

    Еще правило не работает, когда ЧАСТЬ альтернатив являются одиночными символами, а часть - нет. Например [ab]|c|ab можно ведь превратить в [abc]|ab

  5. Oleg Sychev repo owner

    На сайте не вижу. Ввел комплексный пример "a|[a-c]|\^|^|[01]" - в нем по идее она должна отфильтровать все кроме крышки (которая ассерт) и объединить в единый символьный класс. Мало того, что она мне предложила убрать квадратные скобки в [a-c] по другому правилу, так она еще и объединить предложила только [a-c]|\^ а остальные односимвольные альтернативы игнорирует...

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

    Готово за исключением странностей с подсветкой нужной части регулярки, ее поправлю завтра

  7. Oleg Sychev repo owner

    Странности с подсветкой на сервере не исправлены. Возьмите выражение ab|[ab]|[[:space:]]|\B|\W - оно не подсвечивает [ab] , хотя преобразует.

  8. Oleg Sychev repo owner

    На выражении (a|b)+|c оно вообще ничего не выделяет

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

    Перезалил код на сервер. Вот это раюотает "ab|[ab]|[[:space:]]|\B|\W", вот это "(a|b)+|c" преобразует a|b к [ab], но не подсвечивает... Разберусь

  10. Oleg Sychev repo owner
    • changed status to open

    Тестировал на примерах из этого issue, в конце - не помню уже на каком именно (т.к. перешел к следующему), либо на (?:) сервер завис. Попробуйте воспроизвести используя регексы из этого иссью.

  11. Oleg Sychev repo owner

    Вроде виснет на (?:) но надо проверить с вашей стороны...

  12. Log in to comment