Re: Регулярное выражение зависает
От: SlaVVVa Россия  
Дата: 15.06.07 07:37
Оценка:
Здравствуйте, diatlov, Вы писали:

Здравствуйте, diatlov, Вы писали:

D>При его выполнении прога виснет.

не виснет, а долго ищет!

D>Если убрать последние 2 строки то все выполняется отлично.

и с ними выполняется, но ничего не находит!

D>Если убрать 2 строки и прибавить к выражению 2 символа: '<I' то все снова виснет..

см.выше

D>Понять в чем проблема не могу.

Проблема проста по шаблону не может быть ничего найдено.

шаблон без двух послдених строк ищет по вашему примеру выделенное:



<TR>
<TD ROWSPAN=2 VALIGN=MIDDLE ALIGN=MIDDLE BGCOLOR=#CCCCCC>
<B>4</B>
<IMG SRC="http://www.stacksarchive.com/1pixel.gif" BORDER=0 ALT="" TITLE="" WIDTH=2 HEIGHT=1>
</TD>
<TD VALIGN=TOP>
<B>
<A NAME="lot4">
<A HREF="viewlot.php?auction=ST1104&lot=4&auclink=aHR0cDovL3d3dy5zdGFja3NhcmNoaXZlLmNvbS92aWV3Y2F0LnBocD9hdWN0aW9uPVNUMTEwNCNsb3Q0">1786 Vermont. Landscape type. VERMONTENSIUM. Ryder 6</A>
</A>
</B>
</TD>

<TD VALIGN=TOP NOWRAP>
<B>VG<FONT CLASS="tinytext"> to </FONT>F</B>
</TD>

<TD ROWSPAN=2 VALIGN=TOP ALIGN=RIGHT>
<A HREF="viewlot.php?auction=ST1104&lot=4&auclink=aHR0cDovL3d3dy5zdGFja3NhcmNoaXZlLmNvbS92aWV3Y2F0LnBocD9hdWN0aW9uPVNUMTEwNCNsb3Q0">$190.00</A>
<BR>
</TD>
<TR>
<TD COLSPAN=2 VALIGN=TOP>

<A HREF="viewlot.php?auction=ST1104&lot=4&auclink=aHR0cDovL3d3dy5zdGFja3NhcmNoaXZlLmNvbS92aWV3Y2F0LnBocD9hdWN0aW9uPVNUMTEwNCNsb3Q0">
<IMG SRC="http://www.stacksarchive.com/gallery/ST1104/00/ST11040004t1.jpg" width="99" height="50" ALT="1786 Vermont. Landscape type. VERMONTENSIUM. Ryder 6. Very Good to Fine. 100.6 grains. Medium golden..." TITLE="1786 Vermont. Landscape type. VERMONTENSIUM. Ryder 6. Very Good to Fine. 100.6 grains. Medium golden..." BORDER=0 ALIGN=LEFT HSPACE=7>
</A>
<IMG SRC="http://www.stacksarchive.com/1pixel.gif" BORDER=0 ALT="" TITLE="" WIDTH=1 HEIGHT=3>
<BR>Very Good to Fine. 100.6 grains. Medium golden brown with darker color residing in deep planchet flaws, traces of pitting. Obverse shows full sun face and trees, plow and date. Reverse detail is much softer with
<I>DECIMA</I> wholly gone.
</TD>
<!--<TR STYLE="background-color: #fae6e6"><TD COLSPAN=4 STYLE="font-size: 11px;" ALIGN=MIDDLE><B></B></TD>-->
<TR>
<TD COLSPAN=4>
<TABLE WIDTH=100% BORDER=0 CELLSPACING=0 CELLPADDING=0>
<TR>
<TD BGCOLOR=#C0C0C0>
<IMG SRC="http://www.stacksarchive.com/1pixel.gif" BORDER=0 ALT="" TITLE="" WIDTH=1 HEIGHT=1>
</TD>
</TR>
</TABLE>
</TD>


измените шаблон на этот:


pattern = "<TR>\\s*" +
                "<TD[^>]*>\\s*" +
                //получаем номер лота
                "<B>([^<]*)</B>\\s*" +
                "<IMG[^>]*>\\s*" +
                "</TD>\\s*" +
                "<TD[^>]*>\\s*" +
                "<B>\\s*" +
                "<A[^>]*>\\s*" +
                //получаем ссылку на лот и имя лота
                "<A\\s+HREF\\s*=\\s*\"([^\"]*)\">([^<]*)(<I>)?([^<]*)(</I>)?([^<]*)</A>\\s*" +
                "</A>\\s*" +
                "</B>\\s*" +
                "</TD>\\s*" +
                "<TD[^>]*>\\s*" +
                "<B>[^<]*(<FONT)?[^<]*(<I)?[^<]*(</I)?[^<]*(</FONT)*[^<]*</B>\\s*" +
                "</TD>\\s*" +
                "<TD[^>]*>\\s*" +
                "<A[^>]*>([^<]*)</A>\\s*" +
                "<BR>\\s*" +
                "</TD>\\s*<TR>\\s*" +
                "<TD\\s[^>]+>\\s*" + ".*" + // добавлено мной 
                "<IMG\\s[^>]+>\\s*" +
                "<BR>([^<]*(<I>[^<]*</I>|<B>[^<]*</B>))*";  // изменено мной


и будет найдено:


<TR>
<TD ROWSPAN=2 VALIGN=MIDDLE ALIGN=MIDDLE BGCOLOR=#CCCCCC>
<B>4</B>
<IMG SRC="http://www.stacksarchive.com/1pixel.gif" BORDER=0 ALT="" TITLE="" WIDTH=2 HEIGHT=1>
</TD>
<TD VALIGN=TOP>
<B>
<A NAME="lot4">
<A HREF="viewlot.php?auction=ST1104&lot=4&auclink=aHR0cDovL3d3dy5zdGFja3NhcmNoaXZlLmNvbS92aWV3Y2F0LnBocD9hdWN0aW9uPVNUMTEwNCNsb3Q0">1786 Vermont. Landscape type. VERMONTENSIUM. Ryder 6</A>
</A>
</B>
</TD>

<TD VALIGN=TOP NOWRAP>
<B>VG<FONT CLASS="tinytext"> to </FONT>F</B>
</TD>

<TD ROWSPAN=2 VALIGN=TOP ALIGN=RIGHT>
<A HREF="viewlot.php?auction=ST1104&lot=4&auclink=aHR0cDovL3d3dy5zdGFja3NhcmNoaXZlLmNvbS92aWV3Y2F0LnBocD9hdWN0aW9uPVNUMTEwNCNsb3Q0">$190.00</A>
<BR>
</TD>

<TR>
<TD COLSPAN=2 VALIGN=TOP>
<A HREF="viewlot.php?auction=ST1104&lot=4&auclink=aHR0cDovL3d3dy5zdGFja3NhcmNoaXZlLmNvbS92aWV3Y2F0LnBocD9hdWN0aW9uPVNUMTEwNCNsb3Q0">
<IMG SRC="http://www.stacksarchive.com/gallery/ST1104/00/ST11040004t1.jpg" width="99" height="50" ALT="1786 Vermont. Landscape type. VERMONTENSIUM. Ryder 6. Very Good to Fine. 100.6 grains. Medium golden..." TITLE="1786 Vermont. Landscape type. VERMONTENSIUM. Ryder 6. Very Good to Fine. 100.6 grains. Medium golden..." BORDER=0 ALIGN=LEFT HSPACE=7>
</A>

<IMG SRC="http://www.stacksarchive.com/1pixel.gif" BORDER=0 ALT="" TITLE="" WIDTH=1 HEIGHT=3>
<BR>Very Good to Fine. 100.6 grains. Medium golden brown with darker color residing in deep planchet flaws, traces of pitting. Obverse shows full sun face and trees, plow and date. Reverse detail is much softer with
<I>DECIMA</I>
wholly gone.



</TD>
<!--<TR STYLE="background-color: #fae6e6"><TD COLSPAN=4 STYLE="font-size: 11px;" ALIGN=MIDDLE><B></B></TD>-->
<TR>
<TD COLSPAN=4>
<TABLE WIDTH=100% BORDER=0 CELLSPACING=0 CELLPADDING=0>
<TR>
<TD BGCOLOR=#C0C0C0>
<IMG SRC="http://www.stacksarchive.com/1pixel.gif" BORDER=0 ALT="" TITLE="" WIDTH=1 HEIGHT=1>
</TD>
</TR>
</TABLE>
</TD>

Поймете смысл — найдутся слова.
Катон.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.