Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Регулярное выражение в питоне

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> Регулярное выражение в питоне
Имя
Сообщение << Старые топики   Новые топики >>
Регулярное выражение в питоне - 2011-03-19 11:35:26.700000   
KwanzaBot aka hromjo

Сообщений: 1
Оценки: 0
Присоединился: 2011-03-19 11:31:59.393333
Сделал простейшую регулярку:

href="(http.*)"
Проблема в том, что кроме ссылок она выдергивает ещё и всякий мусор, кракозябры, даже откуда-то обнаружил hex'ы.
В qt я бы спасся используя QRegExp::setMinimal(true), но в питоне ни чего такого не нашел. В чем проблема? Есть ли в питоне что-то похожее на кьютовскую функцию? Хотя я понимаю что это только особенность qt, но все же…


UPD:
Вот код:

def getLinks(page): """Выдергивает ссылки из страницы""" reg = "href="(http.*)"" listlink = re.findall(reg, page, re.U) return listlink
Post #: 1
RE: Регулярное выражение в питоне - 2011-03-19 17:53:41.456666   
slipslop

Сообщений: 115
Оценки: 0
Присоединился: 2010-12-27 20:21:35.253333
Давай начнём со строки
quote:


reg = "href="(http.*)""

которая если работает, то мне непонятно как. Я тут вижу две строки и выражение в скобках между ними, и уж точно не регулярное выражение, которое в Python имеет вид r"blablabla". Если я всё правильно понял, у тебя должно быть что то вроде:
reg = r"href=(http.*)" Если не поможет, то тебе всё-таки придётся описать вопрос нормально, в т.ч. указать какие данные у тебя есть на входе и какие ты ожидаешь получить на выходе.
Post #: 2
RE: Регулярное выражение в питоне - 2011-03-19 23:57:17.566666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: slipslop
которое в Python имеет вид r"blablabla".

В питоне регексп – это обычная строка. r можно поставить вначале, но это имеет смысл если в строке много раз попадается \\, и не попадаются другие esc-последовательности. Лучше поставить префикс u – иначе питон весь мозг вынесет разбирая html с кириллицей.
quote:

ORIGINAL: slipslop
reg = r"href=(http.*)"

Так не покатит. Правильнее сказать то, что ТС пытался изобразить не покатит. .* соберёт всё до конца строки, а если вспомнить, что бывает что весь html файл в одну строку на несколько килобайт впихивают… Надо примерно так:
reg=u'href="([^"])"'; Можно посложнее, можно попытаться также справиться с неправильным синтаксисом и учесть то, что некоторые индивидуи используют одинарные кавычки и пишут href='…', а самые упёртые не пишут кавычек вообще. Но это уже либо самостоятельно, либо за деньги. =)
Post #: 3
Страниц:  [1]
Все форумы >> [Веб-программинг] >> Регулярное выражение в питоне







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.