PDA

Просмотр полной версии : регулярка свехнулась, толи я ...))


Sn@k3
15.04.2010, 20:41
вообщем есть строка типа:

<table width=100% bgcolor=#FDFDFF width=115><td width=16% valign=top checkpoint1><p align=center>10.02.2009</td><td align=center width=18% valign=top checkpoint2>22город222</td><td width=51% valign=top checkpoint3>121текст2222222</td></tr></table>

и надо бы вытащить три значения:
дата
город
текст

набросал регулярку для всех трёх:



дата- ter>([0-9]{1,2}).([0-9]{2}).([0-9]{4})</td
город- n=top checkpoint2>(.*)</td><td width=51%
текст- top checkpoint3>(.*)</td></tr>


проверил тут: http://gskinner.com/RegExr/ регулярки рабочие, в файле же не пашет. п.с. как же я тока не пробовал выводить и прег_матчем и прегматчем_алл, всякие форы, вайлы, форетчи всё-всё-всё, кароче помогите))

W!z@rD
15.04.2010, 20:46
center>(.+?)</td>.*?checkpoint2>(.+?)</td>.*?checkpoint3>(.+?)</td>

http://img44.imageshack.us/img44/4363/04152010224509.jpg

Sn@k3
15.04.2010, 22:01
так он всю строку копипастит) такбы я и сам сделал именно те три отдельно а не вместе

Pashkela
15.04.2010, 22:08
<?php
$a='<table width=100% bgcolor=#FDFDFF width=115><td width=16% valign=top checkpoint1><p align=center>10.02.2009</td><td align=center width=18% valign=top checkpoint2>22город222</td><td width=51% valign=top checkpoint3>121текст2222222</td></tr></table>';
preg_match('#<table .*><td .*><p .*>(.*)</td><td .*>(.*)</td><td .*>(.*)</td></tr></table>#',$a,$res);
echo "Дата: " . $res[1] . " город: " . $res[2] . " текст: " . $res[3];
?>


не?

Sn@k3
15.04.2010, 22:29
спб, был косяк в том что я напрямую данные из файла пробовал прегматчем обрабатывать, надо было сначало их точнее из переменной где были данные скопить в ещё одну переменную

dr.Web
16.04.2010, 08:49
я уже делал тоже самое недавно
http://forum.antichat.ru/thread196196.html

login999
16.04.2010, 10:30
Чисто из интереса решил на Python.
Почему-то мну кажется, что одна регулярка - лучше чем три...


#!/usr/bin/env python
#-*-encoding:UTF-8-*-

import re

data = u"""<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>вава</td><td width=51% valign=top 3>вавававава</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>6565</td><td width=51% valign=top 3>565656565</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>456456</td><td width=51% valign=top 3>456456456</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>456456456</td><td width=51% valign=top 3>456456</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>456456456</td><td width=51% valign=top 3>456456456</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>456456456</td><td width=51% valign=top 3>456456456</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>5555</td><td width=51% valign=top 3>4555555555</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>57567</td><td width=51% valign=top 3>567567</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>757567</td><td width=51% valign=top 3>567567567</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>567567</td><td width=51% valign=top 3>576756756756</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>56757</td><td width=51% valign=top 3>56756757</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>4645645</td><td width=51% valign=top 3>6456456456</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>45645</td><td width=51% valign=top 3>645646</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>45645</td><td width=51% valign=top 3>645646</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>45645</td><td width=51% valign=top 3>645646</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>45645</td><td width=51% valign=top 3>645646</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>45645</td><td width=51% valign=top 3>645646</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>343434</td><td width=51% valign=top 3>343434</td></tr></table>"""

parsed = re.findall(ur"\>(.[^\<p ]*?)\<\/td\>", data)
dates = parsed[::3]
first = parsed[1::3]
second = parsed[2::3]

for x in zip(dates, first, second):
print x
print u"="*40
while parsed:
print u"|".join(parsed[:3])
parsed = parsed[3:]

W!z@rD
16.04.2010, 17:29
так он всю строку копипастит) такбы я и сам сделал именно те три отдельно а не вместе

не понял, гоу на канал, там разберемся :)