2013-02-20 3 views
0

борется с этим в течение нескольких часов теперь ...Выписка из элемента HTML

У меня есть следующее регулярное выражение:

(?<=\bdata-video-id=""."">)(.*?)(title=.*?>) 

Следующий вход:

  <div class="cameras">    
      <table class="results"> 
       <colgroup> 
        <col class="col0"> 
        <col class="col1"> 
       </colgroup> 
       <thead> 
        <tr> 
         <th title="Name"> 
          Name 
         </th> 
         <th title="Date"> 
          Date 
         </th> 
        </tr> 
       </thead> 
       <tbody> 
        <tr data-video-id="1"> 
         <td title="149 - Cam123"> 
          149 - Cam123 
         </td> 
         <td title="Feb 18 2013"> 
          Feb 18 2013 
         </td> 
        </tr> 
        <tr data-video-id="2"> 
         <td title="150 - Cam456"> 
          150 - Cam456 
         </td> 
         <td title="Feb 18 2013"> 
          Feb 18 2013 
         </td> 
        </tr>     
       </tbody> 
      </table> 
     </div> 

Регулярное выражение выводит это:

<td title="149 - Cam123"> 
<td title="150 - Cam456"> 

Но то, что я хотел бы получить это содержимое заголовка атрибута клетки из каждой строки таблицы:

149 - Cam123 
150 - Cam456 

Число строк, очевидно, может меняться, но количество столбцов фиксирована. Пожалуйста, помогите мне настроить мелодию вышеуказанного регулярного выражения. Благодаря

ПРИМЕЧАНИЕ: Решение MUST быть регулярным выражением. У меня нет доступа к базе кода, поэтому синтаксический анализатор HTML или любой другой код вмешательства невозможен. Единственный способ, которым я могу подключиться к приложению, - это ввести другое регулярное выражение.

+1

на каком языке? также где вводится? – Kent

+0

Почему регулярное выражение? Используйте синтаксический анализатор html. –

+2

** [обязательный ͠P̯͍̭O̚ N̐Y̡ link] (http://stackoverflow.com/a/1732454/664108) ** –

ответ

0

Исходя из требований ОП, что оно должно быть регулярное выражение, то мое предложение было бы добавить группу обертку к информации внутреннего заголовка:

(?<=\bdata-video-id=""."">).*?title="(.*?)"> 

В противном случае общее решение не использовать регулярное выражение :

Почему вы используете регулярное выражение? Типичное решение для этого из-за сложностей тегов заключается в использовании HTML-парсер

Here is a SO about this topic

Here is another even more popular response on using regex for XHTML который указывал Jeff Atwood in this blogpost

+0

Прокомментируйте, почему это было приостановлено? –

+0

Да, знаю. Однако это то, что работает на клиентском помещении, и я не могу изменить базу кода. Он имеет какой-то механизм регулярных выражений, в который я могу вводить регулярные выражения, не касаясь базы кода. – Tsef

+0

Я обновил свой ответ в этом случае. Пожалуйста, будьте осторожны с этим по ссылкам, которые я предоставил, поскольку regex здесь не предлагается –

Смежные вопросы