[регекспы] Распарсить html?
3 раза перечитал, не понял что хочется. Удалить все тэги <table></table> кроме самых внешних? Удалить их вместе с содержимым?
хочеться получить структуру только внешней таблицы
То есть удалить вложенные <table>xxx</table> целиком?
точно
s/<table>(.*)<\/table>/XXX$1XXY/ # метим внешние тэги
s/<table>.*?<\/table>// #вырезаем внутренние в "нежадном" режиме
s/XXX/<table> # возвращаем назад внешние
s/XXY/<\/table/
?
угу. нужно еще подумать
<table><table></table></table><table><table></table></table>
это ерунда, просто ключ 'g' в конце регекспа. Вот про вложенные подумать надо.
у меня вто это
<table<table</table</table<table<table</table</table
преобразуется в
XXXXXX<table</table</table<table<table</tableXXYYYYY
вместо
XXXXXX<table</tableXXYYYYYXXXXXX<table</tableXXYYYYY
g нужно не в первом regexp, а в втором, который удаляет вложенные
<table<table</table</table<table<table</table</table
дает
<table</table</table
Чтобы с примером?
P.S. Всё, воткнул
P.S. плс закрывай тэги, а то читать тяжело
А в цикле можно s/ выполнять?
как это в цикле ты хочешь сделать?
s/<\/table/X/
s/<table/Y/
s/YYXX/YX/ - это надо зацклить
s/X/</table/
s/Y/<table/
s/<table>/B/g
s/<\/table>/E/g
: l1
s/\(B[^E]*\)B[^E]*E/\1/
t l1
s/B/<table>/g
s/E/<\/table>/g
q
Или можно использовать только команду замены?
cd /usr/ports/www/p5-HTML-Parser
make install
иногда велосипед уже изобрели
Оставить комментарий
dalet
есть открывающий тег (<table) и закрывающий тег (/table). Нужно получить структуру самой внешней таблицы (может не одной)т.е. что-то типв такого "<table<tr<td</td</tr</table"
я уже некоторой последовательностью регэкспов научился оставлять только теги таблиц, получилось
<table<tr<td</td<td<table<tr<td</td</tr</table</td</tr</table"
теперь вопрос , как удалить все внутренние таблицы?
т.е. нужно регулярное выражение дающие таблицы первой вложенности.