...

пятница, 16 августа 2013 г.

[Из песочницы] Набор регулярных выражений для MarkDown

Добрый день, уважаемые пользователи Хабра.

В этом посте хотел бы поделиться тем, с чем игрался долго и надеюсь это будет кому-то полезным.

Недавно столкнулся с тем, что в новом проекте надо было сделать подсветку синтаксиса для языка разметки MarkDown. В последнее время он достаточно популярен в разных местах. Долго гуглил, в результате пришлось все писать самому и долго тестировать чтобы все работало правильно.

Под катом набор регулярных выражений, которые ищут основные элементы разметки MarkDown в варианте для Objective-c.


H1



^# (.)+$ // стандартный заголовок
^.+$\n^={3,}$ // заголовок с двойным подчеркиванием




H2

^#{2,2} (.)+$ // стандартный заголовок
^.+$\n^-{3,}$ // заголовок с одинарным подчеркиванием




H3… H6

^#{3,3} (.)+$ ... ^#{6,6} (.)+$




bold ( **Текст** )

(?<!\*|\\\*)\*{2,2}[^\*\n].+?[^\*]\*{2,2}(?!\*|\\)




italic ( *Текст* или _текст_ )

((?<!\*|\\)\*[^\*\n].+?[^\*|\\]\*(?!\*))|(_.+?_)




bold italic ( ***Текст*** )

(?<!\*|\\)\*{3,3}[^\*\n].+?[^\*|\\]\*{3,3}(?!\*)




monospace ( `текст` )

`[^`]*`




Numbered list

(^\d{1,3}\. .*$)+|(^ {1,10}\d{1,3}\. .*$)+




Unnumbered list

(^(\*|\+|-) .*$)+




image ![img alt](http://image.url/img.png)

!\[[^\[\]]*?\]\(.*?\)




url [ссылка](http://site.com/)

\[[^\[\]]*?\]\(.*?\)|^\[*?\]\(.*?\)




block quotes

^>{1,4} (.)+$


Здесь кусок скриншота из приложения, в котором эти регулярные выражения применялись.


image


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


Комментариев нет:

Отправить комментарий