Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Регулярные выражения. Содержание тега <table>


Автор: zetpilot 13.2.2006, 07:23
Есть к примеру такой html файл
Код

<html>
<head>
<title>Bla....Bla....Bla....Bla....Bla....</title>
</head>
<body>
<table name="tab1">
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
</table>
<table name="tab2">
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
</table>
<table name="tab3">
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
</table>
<table name="tab4">
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
</table>
</body>
</html>


Необходимо вырезать содержание одного тега <table></table> причем надо вырезать содержимое той таблицы имя которой указано в регулярном выражении.

Делаю вот такое
Код

tabs_pat = @"<table name=\W*" + table_name[i];
tabs_pat += @"\W*>(.[\w+\W+]+)</table>";


Мне выводит содержание тега начиная с того имени таблицы которое указано до конца файла
Код

<table name="tab3">
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
</table>
<table name="tab4">
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>
<tr><td>123</td><td>123</td><td>123</td><td>123</td></tr>


По идеи должно работать вот так
Код

tabs_pat = @"<table name=\W*" + table_name[i];
tabs_pat += @"\W*>(.*?)</table>";


Но почему то не работает вапще.

И еще можно ли сразу вырезать все теги <table>, <tr>, <td>, </tr>, </td>, </table>?

Автор: mr.DUDA 13.2.2006, 09:21
Вот так работает:

Код
<table\s*name=\W*tab1\W*>.*?</table>


З.Ы. в опциях Match() нужно поставить RegexOptions.SingleLine

Автор: zetpilot 13.2.2006, 09:49
mr.DUDA, это должно работать если я файл сразу целиком считал или по строчно??
Добавлено @ 09:53
mr.DUDA, А все работает... Спасибки большие smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)