Форум сайта python.su
Почему первое .*? срабатывает как жадное?
In [31]: re.search(r'<.*?categ.*?>', 'kjk<div class="videoss"><a class="category_title1" href="video/#agrej">w3rtwq3t</a></div>').group() Out[31]: '<div class="videoss"><a class="category_title1" href="video/#agrej">'
<a class="category_title1" href="video/#agrej">'
Офлайн
Зачем парсить html регулярными выражениями? Есть добрый lxml (или xml, если документ небольшой). По xml есть даже глава в Бизли Д. “Python. Подробный справочник”. Книга, кстати, на русском :)
Офлайн
Спортивный интерес :)
Не понятно почему не работает.
Офлайн
Видимо, это связано с механизмом реализации регулярных выражений, есть такая книжка http://www.books.ru/books/regulyarnye-vyrazheniya-3-e-izdanie-fail-pdf-626982/?show=1, думаю там это всё объяснено хорошо.
Офлайн
lorien
Книга очень хорошая. Лучшая, я бы сказал, в своей области.
Офлайн
In [51]: re.search(r'<.*categ.*?>', 'kjk<div class="videoss"><a class="category_title1" href="video/#agrej">w3rtwq3t</a></div>').group() Out[51]: '<div class="videoss"><a class="category_title1" href="video/#agrej">'
Офлайн
4kptСпасибо
lorienКнига очень хорошая. Лучшая, я бы сказал, в своей области.
Офлайн
4kptxml - для разбора правильного xml-кода, а html-код не обязан являться правильным xml-кодом
Зачем парсить html регулярными выражениями? Есть добрый lxml (или xml, если документ небольшой).
inzemстранное поведение, не должно такого быть, независимо от того, ищет ли оно слева направо или справа налево
Почему первое .*? срабатывает как жадное?
Отредактировано py.user.next (Июль 8, 2013 11:05:27)
Офлайн
Нормальное поведение.
>>> re.search(r'<.*?categ.*?>', 'kjk<div class="videoss"><a class="category_title1" href="video/#agrej">w3rtwq3t</a><a class="category_title1" href="video/#agrej">w3rtwq3t</a></div>').group() '<div class="videoss"><a class="category_title1" href="video/#agrej">' >>> re.search(r'<.*categ.*?>', 'kjk<div class="videoss"><a class="category_title1" href="video/#agrej">w3rtwq3t</a><a class="category_title1" href="video/#agrej">w3rtwq3t</a></div>').group() '<div class="videoss"><a class="category_title1" href="video/#agrej">w3rtwq3t</a><a class="category_title1" href="video/#agrej">'
re.search(r'<[^<>]*categ[^<>]*>', 'kjk<div class="videoss"><div class="videoss"><a class="category_title1" href="video/#agrej">w3rtwq3t</a></div>').group() '<a class="category_title1" href="video/#agrej">'
Офлайн
ShamanСпасибо! Буду знать.
Нормальное поведение.
In [52]: re.search(r'<a.*categ.*?>', 'kjk<div class="videoss"><a class="category_title1" href="video/#agrej">w3rtwq3t</a></div>').group() Out[52]: '<a class="category_title1" href="video/#agrej">'
Отредактировано inzem (Июль 8, 2013 12:37:00)
Офлайн