Набор регулярных выражений для MarkDown

в 11:38, , рубрики: markdown, regexp, regular expressions, разработка под iOS, Регулярные выражения, метки: , ,

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

Недавно столкнулся с тем, что в новом проекте надо было сделать подсветку синтаксиса для языка разметки 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

Автор: cohe4ko

Источник

Поделиться

* - обязательные к заполнению поля