LINUX.ORG.RU

Regex для парсинга таблицы


0

0

Прошу помощи!

Имеется таблица со строками, как представлена в листинге. Необходимо регулярное выражение, которое содержимое такой строки достанет из таблицы.

В регулярках я пока не очень, читаю Mastering Regular expressions, пока еще не осилил все.

Вытащить ячейки получается, но они на одной строке находятся, а вот несколько строк - никак.

Выражение для ячеек (для одной, с темой письма):

/<td class=lettem[^>]*><a\s+[^>]*>(.*?)<\/a><\/td>/s

Пример строки:

<tr valign=top class="noread" id="str1216701552018" onmousedown="bla" onmouseover="blabla">
    <td class=checkb><input type="checkbox" name="id" value="121670000002018" id="chb12167020000002018" onclick="bla"></td>
    <td><img src=http://img.mail.ru/mail/ru/images/500.gif alt="что-то" width=14 height=14></td>
    <td>&nbsp;</td>
    <td class=letavtor title="mailer@sender1.mail.ru"><a href="readmsg?id=12167015" onmouseup="noBubble(event)">Рассылки@Mail.Ru</a></td>
    <td class=lettem><a href="readmsg?id=12167015520000002018" onmouseup="noBubble(event)">Супер &quot;мега@Mail.Ru&quot; </a></td>
    <td class=dat title="22 июля 2008 08:39:11"><b>22 июля</b></td>
    <td class=datesize nowrap><b>88&nbsp;уу</b></td>
</tr>

P.S. Это скрипт, вытягивающий заголовки письма из аккаунта на mail.ru - тестовое задание такое.

Ну так регулярным выражением ты оцениваешь строку. Либо тогда делай зачистку s/\n|\r//g; либо учитывай вероятность попадания конца строки в любом месте исходного выражения.

s/\n|\r//g;

$text = $_ =~ m/lettem.*?\>(.*?)\</;

Anoxemian ★★★★★
()
Ответ на: комментарий от Anoxemian

Спасибо, начал копать туда

Вроде то, что нужно

it-partizan
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.