| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > pcrecpp |
| Автор: chubaka 13.3.2008, 20:45 |
| Нужно получить все адреса рисунков на странице html, из тега <img src=""> заранее спасибо Добавлено через 3 минуты и 37 секунд Пример на pcre тоже не будет лишним. |
| Автор: chubaka 13.3.2008, 22:59 | ||
Найдено в доках, всем спасибо.
|
| Автор: chubaka 14.3.2008, 02:14 |
| Люди помогите пожалуйста правильно составить регулярное выражение, для получения адресов рисунков с HTML кода, т.е. с тегов <img src="адрес"> |
| Автор: Mayk 14.3.2008, 09:15 | ||
Примерно так(только это RE вима, pcre под рукой нет):
[то еcть ищем тэг <img, внутри которого ищем src="адрес", адрес заносится в первую группу ] \_s в виме это пробельный символ включая перенос строки. в pcre должен быть аналог. |
| Автор: chubaka 14.3.2008, 15:53 | ||||
Дядька g++ ругается матом:
|
| Автор: Mayk 14.3.2008, 16:12 |
А то об не ругался. Во-первых \ и " надо экранировать, Во-вторых йа русским языком сказал что \_s в pcre скорее нет чем есть. Добавлено через 1 минуту и 17 секунд ах да и в pcre группировки задаюццо через () а не через\(\) |
| Автор: Rififi 14.3.2008, 18:27 | ||
| chubaka, для c/c++ регэксп, скорее всего, будет такой:
искомое - в первой группе |
| Автор: chubaka 14.3.2008, 19:27 | ||||
Спасибо, работает! Но, выдает только 1 результат, тоесть находит первый и дальше не ищет. |
| Автор: Rififi 14.3.2008, 20:26 | ||
тебе нужно сделать _глобальную_ замену выдержка из документации: [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 14.3.2008, 20:29 | ||
| Мне не замена нужна, а получить адреса. И помоему нужно чтото дописать в само рег. выражение, в конец и в начало. Я работаю с функцией, которая эти вещи делает глобально, цыклом.
Ну вообщем, вам и так спасибо, частично помогли =) |
| Автор: Rififi 14.3.2008, 20:53 |
| chubaka, ага, попутал. почему-то подумалось именно про замену. тогда смотри про приплюснутые обёртки в виде Consume и FindAndConsume |
| Автор: chubaka 14.3.2008, 21:30 |
| Ясно. Сам не разобрался, буду ждать может кто поможет. Спасибо ;) |
| Автор: vadiml 14.3.2008, 23:07 |
| если "<img.....>" ищет только одно вхождение, то для многих надо указать 1 и более: "(<img.....>)+" Возвращаться будет не скаляр (1 строка), а список (по строке для каждого вхождения), т.е. его лучше всего получать в цикле while() по строке на итерацию если надо искать, например, от 1 до 10 ссылок, то надо писать "(<img.....>){1,10}" а + эквивалентен значению {1,} PS откройте любую книгу по перлу, глава -- регулярные выражения, т.к. pcre -- это регулярные выражения перла, Одной из лучших считается Том Кристиансен, Джон Орвант, Ларри Уолл. Программирование на Perl. http://www.infanata.org/2006/12/04/programmirovanie_na_perl_tom_kristiansen__dzhon_orvant__larri_uoll.html ( файл -- http://rapidshare.com/files/5964764/001563.rar.html ) |
| Автор: chubaka 15.3.2008, 00:02 | ||
vadiml, огромное вам спасибо, это именно то что нужно. Если комуто понадобиться - код:
|