Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
11-1259759327
MTsv DN
2009-12-02 16:08
2015.09.10
Разыскивается код...


2-1392444785
Novicer
2014-02-15 10:13
2015.09.10
Как минимизировать число Query в DataModule?


15-1412333277
Jeer
2014-10-03 14:47
2015.09.10
Лучшие книги 21-го века


2-1397314902
Andrey5
2014-04-12 19:01
2015.09.10
Работа с Edit


15-1415007687
Trylok
2014-11-03 12:41
2015.09.10
Перевод специальности диплома на англ. язык





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский