Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2015.09.10;
Скачать: CL | DM;

Вниз

Регулярные выражения   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.044 c
15-1413985851
Ламот
2014-10-22 17:50
2015.09.10
Как корректно скопировать /dev/mtd0 в образ и обратно (NAND)?


15-1419370202
Юрий
2014-12-24 00:30
2015.09.10
С днем рождения ! 24 декабря 2014 среда


15-1420229087
Дмитрий С
2015-01-02 23:04
2015.09.10
Своя программа или сервис


15-1421388097
Silvestr22
2015-01-16 09:01
2015.09.10
SSD кеш на неосновной диск - возможно ли ?


15-1413405004
Юрий
2014-10-16 00:30
2015.09.10
С днем рождения ! 16 октября 2014 четверг