Регулярное выражение в питоне
Пользователи, просматривающие топик: 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
|
|
|
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.*)"
Если не поможет, то тебе всё-таки придётся описать вопрос нормально, в т.ч. указать какие данные у тебя есть на входе и какие ты ожидаешь получить на выходе.
|
|
|
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='…', а самые упёртые не пишут кавычек вообще. Но это уже либо самостоятельно, либо за деньги. =)
|
|
|
|
|