Closed TopicStart new topicStart Poll

Страницы: (1) 1 
volosatikkk
дата: [ i ]
  • Group Icon
  • Мастер
  • Репутация: 143
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Есть HTML-файлик, из которого хочу выковырять определенный фрагмент.
Приблизительно такой:
CODE

<table style="some_style">
<tr>
<td>нужные данные дальше</td>
</tr>
</table>
<table style="some_style1" здесь могут быть параметры, а могут и не быть>
<tr здесь могут быть параметры, а могут и не быть>
<td здесь могут быть параметры, а могут и не быть>
<table здесь могут быть параметры, а могут и не быть><tr здесь могут быть параметры, а могут и не быть><td здесь могут быть параметры, а могут и не быть>Вот, собственно, те данные, что мне нужны.</td></tr></table>
</td>
</tr>
</table>

Нужно, составить регулярку, чтобы после применения preg_match() на выходе было:
$m[1]=="нужные данные дальше";
$m[2]=="Вот, собственно, те данные, что мне нужны."; т.е. 1 в 1 со всеми тегами в этой таблице.

Только вот загвоздочка еще в том, что перед <table>,<tr>,<td> и прочими тегами туева хуча знаков табуляции.
Если кто-то сталкивался - поделитесь решением.

Если есть решение без предварительного удаления символов табуляции из текста - будет вообще идеально.

Это сообщение отредактировал volosatikkk - 05-01-2008 - 18:43
Slartibartfast
дата: [ i ]
  • *
  • Любитель
  • Репутация: 61
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Т.е. я так понимаю, нужно выдрать все что между тегами <td блаблабла> и </td>, и при это проверить, что эти теги находятся внутри контекста <table> и <tr>?

Если это так, имхо решается только посредством контекстно-свободной грамматики, т.е. выразительности регулярных языков для этого не достаточно.

В частном же случае помогают дополнительные ограничения задачи и знание особенностей конкретных реализаций регулярных языков. :)
mvf23
дата: [ i ]
  • *
  • Специалист
  • Репутация: 62
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
QUOTE (volosatikkk @ 05.01.2008 - время: 17:39)
Есть HTML-файлик, из которого хочу выковырять определенный фрагмент.
Приблизительно такой:

Именно приблизительно? Или строго? Если строго, то регэксп за 10 мин пишется (но довольно длинный, размером примерно с твой образец кода). Если приблизительно - то ограничь степень приближения.

В двух словах везде где у небя написано "здесь могут быть параметры, а могут и не быть" должно быть повторение любого символа кроме закрывающей скобки. Боюсь перепутать, по-моему в перловых регэкспах это бедет выглядеть как

^\>*

все угловые скобочки вроде как полагается экранировать слэшами, пробелы и табы между тегами нужно заменить на служебное слово обозначающее проблемы (кажется \whitespaсes или как-то так, тогда и с табами будет работать) Вместо искомого текста типа (*). Вот и будет регэксп. При правильных флагах должен работать.

Это сообщение отредактировал mvf23 - 18-03-2008 - 17:57
do-do
дата: [ i ]
  • Group Icon
  • Мастер
  • Репутация: 349
  • Статус: Поболтаем?
  • Member OfflineМужчинаСвободен
Надо глянуть Ассемблерный листинг Паскаля при генерации AND и MOD - думаю там не все так просто :)

C другой стороны Процессоры (что АМД, чо Интел) суперскалярные :) и как уж там ОНИ ее поставят и когда выполнят :) то же вопрос интересный
mvf23
дата: [ i ]
  • *
  • Специалист
  • Репутация: 62
  • Статус: Давай пообщаемся!
  • Member OfflineМужчинаСвободен
Кажися, ты топиком ошибся... :)

QUOTE (do-do @ 18.03.2008 - время: 20:59)
Надо глянуть Ассемблерный листинг Паскаля при генерации AND и MOD - думаю там не все так просто :)

Вообще турбопаскаль не сильно выпендривается и mod превращает в ассемблерный DIV, а and в ассемблерный AND. Можешь проверить.

QUOTE (do-do @ 18.03.2008 - время: 20:59)
C другой стороны Процессоры (что АМД, чо Интел) суперскалярные :)  и как уж там ОНИ ее поставят и когда выполнят :) то же вопрос интересный

Есть таком момент. Но в любом случае AND вне зависимости от прочих условий ВСЕГДА выполняется на два порядка быстрее (сам попробуй столбиком одно двоичное число на другое разделить с остатком, быстро поймешь что операция это не столь простая, как может показаться smile.gif). Причем ассемблерный DIV всегда требует предварительной загрузки данных в регистры, а у AND существуют варианты, достающие данные непосредственно из памяти.
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)

Страницы: (1) 1

Closed TopicStart new topicStart Poll0


Рекомендуем почитать также топики:

Греется системный блок!!!

iTunes 7.0.2

Может кто поможет...

Ragnarok online

Кто-то пытается взломать мою асю!



>