![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| chubaka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 8.6.2007 Репутация: нет Всего: нет |
Нужно получить все адреса рисунков на странице html, из тега <img src="">
заранее спасибо Добавлено через 3 минуты и 37 секунд Пример на pcre тоже не будет лишним. |
|||
|
||||
| chubaka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 8.6.2007 Репутация: нет Всего: нет |
Найдено в доках, всем спасибо.
|
|||
|
||||
| chubaka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 8.6.2007 Репутация: нет Всего: нет |
Люди помогите пожалуйста правильно составить регулярное выражение, для получения адресов рисунков с HTML кода, т.е. с тегов <img src="адрес">
|
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Примерно так(только это RE вима, pcre под рукой нет):
[то еcть ищем тэг <img, внутри которого ищем src="адрес", адрес заносится в первую группу ] \_s в виме это пробельный символ включая перенос строки. в pcre должен быть аналог. Это сообщение отредактировал(а) Mayk - 14.3.2008, 09:15 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| chubaka |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 8.6.2007 Репутация: нет Всего: нет |
Дядька g++ ругается матом:
Это сообщение отредактировал(а) chubaka - 14.3.2008, 15:59 |
||||
|
|||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
А то об не ругался. Во-первых \ и " надо экранировать, Во-вторых йа русским языком сказал что \_s в pcre скорее нет чем есть. Добавлено через 1 минуту и 17 секунд ах да и в pcre группировки задаюццо через () а не через\(\) -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 11 Всего: 36 |
chubaka,
для c/c++ регэксп, скорее всего, будет такой:
искомое - в первой группе |
|||
|
||||
| chubaka |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 8.6.2007 Репутация: нет Всего: нет |
Спасибо, работает! Но, выдает только 1 результат, тоесть находит первый и дальше не ищет. Это сообщение отредактировал(а) chubaka - 14.3.2008, 19:38 |
||||
|
|||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 11 Всего: 36 |
тебе нужно сделать _глобальную_ замену выдержка из документации: [pre] GlobalReplace is like Replace except that it replaces all occurrences of the pattern in the string with the rewrite. Replacements are not subject to re-matching. For example: string s = "yabba dabba doo"; pcrecpp::RE("b+").GlobalReplace("d", &s); will leave "s" containing "yada dada doo". It returns the number of replacements made. [/pre] |
|||
|
||||
| chubaka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 8.6.2007 Репутация: нет Всего: нет |
Мне не замена нужна, а получить адреса. И помоему нужно чтото дописать в само рег. выражение, в конец и в начало.
Я работаю с функцией, которая эти вещи делает глобально, цыклом.
Ну вообщем, вам и так спасибо, частично помогли =) |
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 11 Всего: 36 |
chubaka,
ага, попутал. почему-то подумалось именно про замену. тогда смотри про приплюснутые обёртки в виде Consume и FindAndConsume |
|||
|
||||
| chubaka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 8.6.2007 Репутация: нет Всего: нет |
Ясно. Сам не разобрался, буду ждать может кто поможет. Спасибо ;)
|
|||
|
||||
| vadiml |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 27.7.2007 Репутация: 2 Всего: 7 |
если "<img.....>" ищет только одно вхождение, то для многих надо указать 1 и более:
"(<img.....>)+" Возвращаться будет не скаляр (1 строка), а список (по строке для каждого вхождения), т.е. его лучше всего получать в цикле while() по строке на итерацию если надо искать, например, от 1 до 10 ссылок, то надо писать "(<img.....>){1,10}" а + эквивалентен значению {1,} PS откройте любую книгу по перлу, глава -- регулярные выражения, т.к. pcre -- это регулярные выражения перла, Одной из лучших считается Том Кристиансен, Джон Орвант, Ларри Уолл. Программирование на Perl. http://www.infanata.org/2006/12/04/program...larri_uoll.html ( файл -- http://rapidshare.com/files/5964764/001563.rar.html ) |
|||
|
||||
| chubaka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 8.6.2007 Репутация: нет Всего: нет |
vadiml, огромное вам спасибо, это именно то что нужно. Если комуто понадобиться - код:
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |