Форум: "Прочее";
Текущий архив: 2015.09.10;
Скачать: [xml.tar.bz2];
ВнизРегулярные выражения Найти похожие ветки
← →
Pavia © (2014-12-16 10:13) [0]Делаю для себя, вернее для тренировки, библиотечку для работы с регулярными выражениями. Так вот возник вопрос, как обрабатывать символ означающее пустое множество символов?
К примеру есть шаблон
/(|a)/
допустим он эквивалентен такой записи.
/([:Eps:]|a)/
стоит ли выдавать ошибку на недопустимость грамматики или стоит обрабатывать? И если обрабатывать то должен ли
/([:Eps:]|a)/.test("bob")
возвращать true?
Предполагается что "bob"="[:Eps:]b[:Eps:]o[:Eps:]b[:Eps:]"
Интересует как это сделано в других языках и библиотеках.
← →
han_malign © (2014-12-16 11:31) [1]по правилам - сравнение с пустым шаблоном всегда успешно...
на этом в PCRE построен трюк предварительного описания именованных шаблонов (?(DEFINE)(?"pattern1"...)...)
В FAR/LuaFAR - проходит... находит любой символ.
явовский лень запускать...
← →
Дмитрий С © (2014-12-16 16:47) [2]Должен обрабатывать. Как минимум это ожидаемое поведение.
← →
Pavia © (2014-12-16 17:03) [3]А где это в правилах описывается? Можно ссылку на любую документацию?
← →
Дмитрий С © (2014-12-16 17:29) [4]А как вы без какой-либо документации библиотеку делаете? :)
← →
Pavia © (2014-12-16 18:13) [5]Неправильно выразился. Доккументация есть, но дело в том что в ней непрописан этот момент.
Существует около 12, а то и поболее модификаций грамматик регулярных
выражений. И их реализаций в виде библиотек. Пишу 13 вариант. Понятно что можно сделать по своему. Но хочется остаться в рамках традиций. Поэтому и создал тему что бы определиться с вариантам. Судя по результатам возвращается толи ерунда, толи идёт замена на символ /./ А как бы поступили вы?
← →
han_malign © (2014-12-18 13:46) [6]
> А как бы поступили вы?
- с точки зрения теории - конструкция полностью корректна
https://ru.wikipedia.org/wiki/Регулярные_выражения#.D0.92_.D1.82.D0.B5.D0.BE.D1.80.D0.B8.D0.B8_.D1.84.D0.BE.D1 .80.D0.BC.D0.B0.D0.BB.D1.8C.D0.BD.D1.8B.D1.85_.D1.8F.D0.B7.D1.8B.D0.BA.D0.BE.D0. B2
но
- повторяет (...)?
- возникают неоднозначности в интуитивном понимании(а ведь есть еще варианты когда оператор в определенном контексте трактуется как символ)
- с большой долей вероятности может быть ляпом
а значит
- является семантически ущербной и должна трактоваться как ошибка
а если оно еще и приводит к усложнению алгоритма - то адназначна KISS...
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2015.09.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.045 c