Набор регулярных выражений для 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

ссылка на оригинал статьи http://habrahabr.ru/post/190304/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *