Альтернатива с одиночными символами
Реализовать правило: "Альтернатива с одиночными символами жквивалента символьному классу"
Comments (20)
-
reporter -
repo owner Упорядочиванием символьного класса может заниматься отдельное правило, посвященное символьному классу. Вместе с его общей нормализацией.
Здесь достаточно чтобы работало "a|b|[c-e]" => "[abc-e]"
-
repo owner По сравнению с 373 здесь обратная проблема - не подставляются необходимые бекслеши. Т.е. a|-|e становится [a-e] что очень далеко от правды...
-
repo owner Аналогично из a|]|b получается [a]b]
-
repo owner Еще правило не работает, когда ЧАСТЬ альтернатив являются одиночными символами, а часть - нет. Например [ab]|c|ab можно ведь превратить в [abc]|ab
-
reporter Эскейпинг реализован
-
repo owner Эскейпинг подтверждаю, заодно обнаружил https://bitbucket.org/oasychev/moodle-plugins/issues/406/------------------------------------------
Жду для ситуаций типа "когда ЧАСТЬ альтернатив являются одиночными символами, а часть - нет. Например [ab]|c|ab можно ведь превратить в [abc]|ab"
-
reporter Это сделано
-
repo owner На сайте не вижу. Ввел комплексный пример "a|[a-c]|\^|^|[01]" - в нем по идее она должна отфильтровать все кроме крышки (которая ассерт) и объединить в единый символьный класс. Мало того, что она мне предложила убрать квадратные скобки в [a-c] по другому правилу, так она еще и объединить предложила только [a-c]|\^ а остальные односимвольные альтернативы игнорирует...
-
reporter Готово за исключением странностей с подсветкой нужной части регулярки, ее поправлю завтра
-
reporter Странности с подсветкой исправлены
-
repo owner Странности с подсветкой на сервере не исправлены. Возьмите выражение ab|[ab]|[[:space:]]|\B|\W - оно не подсвечивает [ab] , хотя преобразует.
-
repo owner На выражении (a|b)+|c оно вообще ничего не выделяет
-
reporter Перезалил код на сервер. Вот это раюотает "ab|[ab]|[[:space:]]|\B|\W", вот это "(a|b)+|c" преобразует a|b к [ab], но не подсвечивает... Разберусь
-
reporter Исправлено
-
repo owner - changed status to resolved
Вроде работает.
-
repo owner - changed status to open
Тестировал на примерах из этого issue, в конце - не помню уже на каком именно (т.к. перешел к следующему), либо на (?:) сервер завис. Попробуйте воспроизвести используя регексы из этого иссью.
-
repo owner Вроде виснет на (?:) но надо проверить с вашей стороны...
-
reporter Исправлено
-
repo owner - changed status to resolved
Вижу.
- Log in to comment
Реализовано без учета нормализации символьного класса. Т.е. например "a|b|[c-e]" => "[a-e]". Сейчас работает для "b|a|[c]" => "[bac]". Нужно ли упорядочивать символы в символьном классе?