Комментарии 17
А экранирование везде учитывается? То есть например вот это правильно распарсится:
Превратится в Курс*ив
*Курс\*ив*
Превратится в Курс*ив
+1
Йехх… Таблиц бы.
0
Какой библиотекой пользовались? Для регулярных выражений их несколько есть.
Еще неплохо было бы пример использования привести.
Я вот пытался здесь проверить: regexr.com?35vsn
Не выходит.
А еще у вас все регулярные выражения не жадные, что по идее должно привести к проблемам… короче хочу пример.
Еще неплохо было бы пример использования привести.
Я вот пытался здесь проверить: regexr.com?35vsn
Не выходит.
А еще у вас все регулярные выражения не жадные, что по идее должно привести к проблемам… короче хочу пример.
+2
Тот текст, который приведен на картинке — он обработан именно этими регулярками, и к ним применены стили
-1
Соглашусь, лучше показать в статье перед регексами, что собственно парсят регексы.
*? — плохой стиль, они дублируют друг друга
*? — плохой стиль, они дублируют друг друга
Мое видение например для img
Имеем:
Шаг 1: Cобираем весь текст от одной скобки до другой в конструкции "[Alt-текст]" (подразумеваем, что Alt-текст обязательно хоть один символ)
Шаг 2: Делаем выражение "[Alt-текст]" необязательным, так как может быть без Alt-текст в виде: "!(URL изображения «Заголовок изображения»)":
Шаг 3: Cобираем весь текст от одной круглой скобки до закрывающей ее скобки в конструкции "(URL изображения «Заголовок изображения»)" (есть непонятный нюанс, что будет, если в URL будет присутствовать закрывающая скобка )
Шаг 4: собираем вместе:
Описана общая логика, так как могут быть нюансы конкретного применения. Но выполнение по указанным шагам поможет в них разобраться.
![Alt-текст](URL изображения «Заголовок изображения»)
Шаг 1: Cобираем весь текст от одной скобки до другой в конструкции "[Alt-текст]" (подразумеваем, что Alt-текст обязательно хоть один символ)
\[ [^ \] ]+ \]
Шаг 2: Делаем выражение "[Alt-текст]" необязательным, так как может быть без Alt-текст в виде: "!(URL изображения «Заголовок изображения»)":
( \[ [ ^\] ]+ \] )?
Шаг 3: Cобираем весь текст от одной круглой скобки до закрывающей ее скобки в конструкции "(URL изображения «Заголовок изображения»)" (есть непонятный нюанс, что будет, если в URL будет присутствовать закрывающая скобка )
\( [^ \) ]+ \)
Шаг 4: собираем вместе:
! ( \[ [^\]]+ \] )? \( [^\)]+ \)
Описана общая логика, так как могут быть нюансы конкретного применения. Но выполнение по указанным шагам поможет в них разобраться.
0
Меня почему то терзают смутные сомнения что данный пост, всё таки, следует занести в хаб "ненормальное программирование". Решать эту задачу, конечно, можно и регулярными выражениями, но конечные автоматы, наверное, подошли бы куда лушче. ИМХО.
+3
Вопрос: как это реализовать на Objective-c? :-)
0
Как минимум вообще без проблем на си, нет?)
github.com/vmg/sundown
github.com/vmg/sundown
+2
НЛО прилетело и опубликовало эту надпись здесь
А что мешает взять их в оригинале??? daringfireball.net/projects/markdown/
+5
Может я не особо разобрался в том коде, но в чистом виде и для Obj-c я их там не увидел. Если я ошибаюсь, то исправьте меня.
0
Markdown был написан Джоном Грубером на Perl. Логично, что у него на сайте варианта на Objective-C нет. Но есть целый ряд приложений и на Objective-C, и на С/С++, которые поддерживают Markdown синтакс. На GitHub не искали?
Вот как #{1,6} превращаются в H{1...6}:
Конечно, в C один-в-один так не сделать ))
Вот как #{1,6} превращаются в H{1...6}:
$text =~ s{
^(\#{1,6}) # $1 = string of #'s
[ \t]*
(.+?) # $2 = Header text
[ \t]*
\#* # optional closing #'s (not counted)
\n+
}{
my $h_level = length($1);
"<h$h_level>" . _RunSpanGamut($2) . "</h$h_level>\n\n";
}egmx;
Конечно, в C один-в-один так не сделать ))
+1
Нюанс в том, что все что на гитхабе — это парсеры маркдауна. А мне надо было чтобы была подсветка синтаксиса в реальном времени.
И правктически все что есть на гитхабе на эту тему — это порты из того скрипта на перл.
Именно поэтому решил делать так.
И правктически все что есть на гитхабе на эту тему — это порты из того скрипта на перл.
Именно поэтому решил делать так.
0
Так подсветка синтаксиса markdown много где есть. На регулярных выражениях она точно определена в Vim (Vim просто не умеет подсветку без регулярных выражений).
Просто надо смотреть более общие проекты: редакторы (Vim, katepart, Sublime, …) и библиотеки (pygments, google code prettify, …). Правда, для существующего проекта вряд ли что‐то, кроме проверенных регулярных выражений, можно оттуда выдернуть. Библиотеки подсветки для C/Objective-C вы ведь смотрели?
Просто надо смотреть более общие проекты: редакторы (Vim, katepart, Sublime, …) и библиотеки (pygments, google code prettify, …). Правда, для существующего проекта вряд ли что‐то, кроме проверенных регулярных выражений, можно оттуда выдернуть. Библиотеки подсветки для C/Objective-C вы ведь смотрели?
+2
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Публикации
Изменить настройки темы
Набор регулярных выражений для MarkDown