parser

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

 

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

Ответ

Maxx 27.07.2007 15:51 / 27.07.2007 15:51

Задача сводится к такой:

а. Найти все тэги начинающиеся на a , где после 'a' есть еще какая-нть буква
б. Найти все тэги не начинающиеся на 'a'
в. после найденных выше символов может быть либо пробел, после которого может быть теоретически все что угодно, кроме закрывающей тэговой скобки, которой тэг должен заканчиваться, либо ничего не быть, если тэг без параметров.
Перед найденными конструкциями может быть '/' если тэг закрывающий
г. Все найденное - удалить
+++++++++++++++++++++++++++++++++++++++

a.
[a][a-z0-9!-]+
б.
[b-z0-9][a-z0-9!-]*
в.
\/?(?:(вариант a)|(вариант б))(\s[^^>])?>
обединяем:
$text[^text.match[(<\/?(?:(?:[a][a-z0-9!-]+)|(?:[b-z0-9!-][\w\-]*))(?:\s[^^>]*)?>)][gi]{ }]
Если тэги могут быть произвольными (XML) - то нужно поменять классы символов на нужные