Символьный класс с одним символом
Реализовать правило: "Положительный символьный класс с одим символо или группой одинаковых символов эквивалентен символу без символьного класса"
Comments (13)
-
reporter -
reporter Реализовано для положительных символьных классов с одним символом, осталось добавить проверку для случая одинаковых символов в символьном классе
-
reporter Готово
-
repo owner Жуткие глюки. У меня это правило срабатывает на [c-e] и убирает квадратные скобки.
Вы похоже попали в ловушку только позитивных тестов (тесты на срабатывание правила), а негативных - на ситуации когда не должно срабатывать - не писали. Отсюда такие ужасы...
-
repo owner Также работает, хотя не должно, для случая с одним posix-классом - [[:space:]] преобразуется в [:space:] что приводит к ошибке в компиляции выражения.
-
repo owner Еще есть баги связанные с эскейпингом, который как известно внутри и вне квадратных скобок отличается. Так [+] она у вас в + преобразует, равно как и [[] в [ - что дает синтаксические ошибки.
-
repo owner [\b] который является символом бекспейса преобразуется в \b который ассерт. Ужасы нашего городка...
-
repo owner Аналогично для [\z] и т.д. - смотрите все простые ассерты в виде букв и бекслеша...
-
repo owner Еще обратите внимание что это правило зависит от нотации. Расширенная нотация игнорирует пробелы, не являющиеся частью символьных классов, а еще в ней есть знак однострочного комментария. В случае расширенной нотации они не должны преобразовываться из [ ] в просто пробел - и знак комментария тоже.
-
reporter Экранирование таких символов, как {,},( и т.д. готово, с остальными разберусь чуть позже. Ведь тут [\b] в символьном классе 1 символ, и вообще может не стоит для него убирать квадратные скобки? Он же преобразуется как-то так без них: \x08...
-
repo owner Может для \b стоит предлагать наоборот - скобки ввести.
Обратите внимание также на поведение с удалением скобок для \A \Z \z - оно тоже глючит - и вообще проверьте все эскейп-последовательности, которые не соответствуют набору символов.
-
repo owner Обратите внимание что для \s \w \d и их больших версий оно должно работать, [\s] и \s эквивалентны.
Сейчас на сервере не работает
-
repo owner 1) В расширенной нотации убирает скобки вокруг пробела, хотя это меняет смысл выражения...
- Log in to comment
Убрать проверку отрицательных символьных классов и добавить проверку для случая одинаковых символов в символьном классе