|
|
|
| Вот такой регекс
<div\s+class="useddetails-right\s+wid342\s+fl">
\s*
<div\s+class="padbot5"(?:[^>]*?)>
\s*
<h4\s+class="darkred">
(?<ModelName>.+?(?=</h4>))</h4>
\s*
</div>
\s*
<div\s+class="fl"(?:[^>]*?)>
\s*
<table\s+class="used-details\s+wid342"\s+cellspacing="0">
\s*
# Price
<tr>
\s*<td\s+width="175"\s+class="grey11">Цена</td>\s*
<td\s+class="b11\s+b">(?<PriceCurrency>[^<]*?){0,1}<span\s+class="red11">
(?<Price>.+?(?=</span>))</span></td>
\s*
</tr>
\s*
# Year
<tr>
\s*<td\s+class="grey11">Год\s+выпуска:</td>\s*
<td\s+class="b11\s+b">(?<Year>.+?(?=</td>))</td>
\s*
</tr>
\s*
# Mileage
<tr>
\s*<td\s+class="grey11">Пробег:</td>\s+
<td\s+class="b11\s+b">(?<Mileage>.+?(?=</td>))</td>
\s*
</tr>
\s*
# Body
<tr>
\s*<td\s+class="grey11">Тип\s+кузова:</td>\s*
<td\s+class="b11">(?<Body>.+?(?=</td>))</td>
\s*
</tr>
\s*
(
# Color
<tr>
\s*<td\s+class="grey11">Цвет:</td>\s*
<td\s+class="b11">(?<Color>.+?(?=</td>))</td>
\s*
</tr>
\s*
){0,1}
# Engine Size
<tr>
\s*<td\s+class="grey11">Объем\s+двигателя:</td>\s*
<td\s+class="b11\s+b">(?<EngineSize>.+?(?=</td>))</td>
\s*
</tr>
\s*
(
# Power
<tr>
\s*<td\s+class="grey11">Мощность:</td>\s*
<td\s+class="b11\s+b">(?<Power>.+?(?=</td>))</td>
\s*
</tr>
\s*
){0,1}
# Engine Type
<tr>
\s*<td\s+class="grey11">Тип\s+двигателя:</td>\s*
<td\s+class="b11">(?<EngineType>.+?(?=</td>))</td>
\s*
</tr>
\s*
(
# Drive
<tr>
\s*<td\s+class="grey11">Привод:</td>\s*
<td\s+class="b11">(?<Drive>.+?(?=</td>))</td>
\s*
</tr>
\s*
){0,1}
# Transmission
<tr>
\s*<td\s+class="grey11">Трансмиссия:</td>\s*
<td\s+class="b11\s+b">(?<Transmission>.+?(?=</td>))</td>
\s*
</tr>
\s*
(
# Interior
<tr>
\s*<td\s+class="grey11">Салон:</td>\s*
<td\s+class="b11">(?<Interior>.+?(?=</td>))</td>
\s*
</tr>
\s*
){0,1}
# Used
<tr>
\s*<td\s+class="grey11">Состояние:</td>\s*
<td\s+class="b11">(?<Used>.+?(?=</td>))</td>
\s*
</tr>
\s*
# Region
<tr>
\s*<td\s+class="grey11">Регион:</td>\s*
<td\s+class="b11\s+b">(?<Region>.+?(?=</td>))</td>
\s*
</tr>
\s*
</table>
\s*
#Fucked AD
(
<div\s+class="wid342\s+fl\s+padtop15">
\s*
<div\s+class="linkicon\s+listicon\s+lh16">
\s*
<a(?:[^>]*?)>
(?:.+?)</a>\s*</div>\s*</div>
){0,1}
\s*
</div>
\s*
(
# Amenities
<div\s+class="wid342\s+fl\s+mtop10(?:[^>]*?)>
\s*
<div\s+class="pad10">
(?:.+?)
<ul\s+class="chkbox">
(?<Amenities>.+?)
</ul>
\s*
</div>
){0,1}
(?:.+?)
#Extra
(
\s*
<div\s+class="b10\s+lh16\s+vpad10">
(?<Extra>.+?)\s*
</div>
)
{0,1}
|
Вот такой текст
</div>
<div class="useddetails-right wid342 fl">
<div class="padbot5" style="border-bottom:1px solid #B3C3D0; margin: 0 0 10px 0;">
<h4 class="darkred">Skoda Octavia LS</h4>
</div>
<div class="fl" style="clear:both">
<table class="used-details wid342" cellspacing="0">
<tr>
<td width="175" class="grey11">Цена</td>
<td class="b11 b">$<span class="red11">9100</span></td>
</tr>
<tr>
<td class="grey11">Год выпуска:</td>
<td class="b11 b">2000 г.</td>
</tr>
<tr>
<td class="grey11">Пробег:</td>
<td class="b11 b">200000 км</td>
</tr>
<tr>
<td class="grey11">Тип кузова:</td>
<td class="b11">Седан</td>
</tr>
<tr>
<td class="grey11">Цвет:</td>
<td class="b11">зеленый</td>
</tr>
<tr>
<td class="grey11">Объем двигателя:</td>
<td class="b11 b">1600 л</td>
</tr>
<tr>
<td class="grey11">Тип двигателя:</td>
<td class="b11">Бензиновый</td>
</tr>
<tr>
<td class="grey11">Привод:</td>
<td class="b11">Передний</td>
</tr>
<tr>
<td class="grey11">Трансмиссия:</td>
<td class="b11 b">Механическая</td>
</tr>
<tr>
<td class="grey11">Салон:</td>
<td class="b11">Велюр</td>
</tr>
<tr>
<td class="grey11">Состояние:</td>
<td class="b11">Подержанный</td>
</tr>
<tr>
<td class="grey11">Регион:</td>
<td class="b11 b">Пермь</td>
</tr>
</table>
</div>
<div class="wid342 fl mtop10" style="background:#F5F5F5">
<div class="pad10">
<h4 class="darkred">Комплектация</h4>
<ul class="chkbox">
<li class="par">
<ul>
<li>ABS</li>
<li>Акустическая система</li>
<li>Гидроусилитель руля</li>
<li>Иммобилайзер</li>
<li>Кондиционер</li>
<li>Корректор фар</li>
<li>Литые диски</li>
<li>Магнитола</li>
<li>Рег. рулевая колонка</li>
</ul>
</li>
<li class="par">
<ul>
<li>Рег. сидений по высоте</li>
<li>Сигнализация</li>
<li>Спойлер</li>
<li>Тонированные стекла</li>
<li>Фаркоп</li>
<li>Центральный замок</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="wid342 fl oh">
<p class="vmargin10">
<h4>Дополнительная информация</h4>
<div class="b10 lh16 vpad10">
ХОРОШЕЕ СОСТОЯНИЕ.ЧЕШСКАЯ ЗБОРКА.
</div>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</noscript>
</div>
<div class="main">
<div class="title">
<h2 class="wb11 upper fl">Отправить сообщение продавцу</h2>
|
Почему он не находит группу Extra, т.е. "Дополнительная информация"? | |
|
|
|
|
автор: ......... (11.08.2009 в 01:06) |
|
|
для: senglory
(10.08.2009 в 18:33)
| | проще написать всё сначала , чем разбираться
, зато ещё один глюк в регексп
(?:(?:(?!</td)[^М])+
Мощность:</td>\s*<td\s+class="b11\s+b">
(?<Power>[^<]*)</td>)?
так всё работает
если вместо (?:(?!</td)[^М])+
сделать например (?:(?!</td)[^М]+)+
весь шаблон не совпадает даже хоть вся эта часть необязательно должна присутствовать
вообще вставил по привычке (?:(?!</td).[^М<]*)+ но такие дела, оказалось
$re ='@<div\s+class="useddetails-right\s+wid342\s+fl">
(?:(?!<h).[^<]*)+
<h4\s+class="darkred">
(?<ModelName>[^<]+)
[^Ц]+
Цена.+?<td\s+class="b11\s+b">
(?<PriceCurrency>[^<]*)<span\s+class="red11">
(?<Price>[^<]+)
[^Г]+
Год\s+выпуска:.+?<td\s+class="b11\s+b">
(?<Year>[^<]*)</td>
[^П]+
Пробег:</td>\s+ <td\s+class="b11\s+b">
(?<Mileage>[^<]*)
[^Т]+
Тип\s+кузова:</td>\s* <td\s+class="b11">
(?<Body>[^<]*)
[^Ц]+
Цвет:</td>\s*<td\s+class="b11">
(?<Color>[^<]*)</td>
[^О]+
Объем\s+двигателя:</td>\s*<td\s+class="b11\s+b">
(?<EngineSize>[^<]*)</td>
(?:(?:(?!</td)[^М])+
Мощность:</td>\s*<td\s+class="b11\s+b">
(?<Power>[^<]*)</td>)? # здесь придётся наверное такое что-то делать
# если учитывать необязательность
(?:(?:(?!</td)[^Т])+
Тип\s+двигателя:</td>\s*<td\s+class="b11">
(?<EngineType>[^<]*)</td>)?
[^П]+
Привод:</td>\s*<td\s+class="b11">
(?<Drive>[^<]*)
[^Т]+
Трансмиссия:</td>\s*<td\s+class="b11\s+b">
(?<Transmission>[^<]*)
[^С]+
Салон:</td>\s*<td\s+class="b11">
(?<Interior>[^<]*)
[^С]+
Состояние:</td>\s*<td\s+class="b11">
(?<Used>[^<]*)
[^Р]+
Регион:</td>\s*<td\s+class="b11\s+b">
(?<Region>.+?(?=</td>))
(?:(?!<h4).[^<]*)+
<h4[^>]*>Комплектация</h4\s*>
(?<xlist>(?:(?!</div).[^<]*)+) #здесь может надо было по </ul
# и ещё одну подмаску *непонял*
(?:(?!<h).[^<]*)+
<h4[^>]*>Дополнительная[^<]+<[^<]+
<div[^>]+>\s*
(?<Extra>[^<]*?)\s*<
@xs';
|
начал переписывать, запустил, дошёл до того что надо необязательные части сделать, и бросил
, не нравятся мне такие выражения ,) | |
|
|
|