parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Решил задачу преобразованием по принципу типографа...

G_Z 31.12.2004 16:47 / 31.12.2004 18:00

Немного расширив функционал:
$counter(1)
# Выловим все тэги с атрибутами.
$tags[^text.match[<[^^>]+("|')[^^"']+\1 ?[^^>]?>][gi']]
# Заменяем в тексте все тэги на метки, под номерами (по порядку).
$text[^text.match[<[^^>]+("|')[^^"']+\1 ?[^^>]?>][gi]{<tag$counter/>^counter.inc[]}]
$quotes_replace[^table::create{from	to
"	&quot^;
'	&apos^;}]
$text[^text.replace[$quotes_replace]]
# Таблица замены меток на тэги.
$marks_to_tags_replace[^table::create{from	to
^tags.menu{<tag^tags.line[]/>	$tags.match
}}]
$result[^text.replace[$marks_to_tags_replace]]
$text[]
$tags[]
Одним регвыром - надо покумекать...

PS
Почему-то
<[^^>]+("|')[^^"']+\1[^^>]?>
не совпадает с тэгом, к примеру, <img src="ссылка" />, то бишь с пробелом перед />, странно.
Пришлось пробел добавить -
<[^^>]+("|')[^^"']+\1 ?[^^>]?>
Странно два раза.

Ну и [^^"'] - источник потенциальных ошибок...