| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Поиск текста |
| Автор: Rondo 6.7.2006, 22:45 |
| Подскажите как можно найти текст в html документе, между какими то тегами. Тоесть чтоб например в memo выводилось все что лежит между тегами <body>это должно вывестись в momo </body> |
| Автор: Poseidon 6.7.2006, 23:30 | ||
Можно
Писал "на коленке", поэтому можно многое оптимизировать. Но главное - суть - должна быть понятна |
| Автор: Rondo 6.7.2006, 23:35 |
| Спасибки за такой быстрый ответ, ща проверю! |
| Автор: Rondo 6.7.2006, 23:54 |
| Все работате, только после того как найдет 1 тег останавливается Добавлено @ 00:00 Как сделать чтоб он все тэги страницы выводил, немогу придумать |
| Автор: Poseidon 7.7.2006, 00:11 |
| Что это значит? На одной странице может быть до сотни различных тегов. Ты хочешь их все выводить? Или ты хочешь выводить все врагменты текста, каторый заключен к какой-то один тип тега (как <body> в примере)? |
| Автор: Rondo 7.7.2006, 00:16 |
| Я имел в виду чтоб он все писал мне в memo что находится между <тег>...</тег> body я простн взял для примера Мне надо все фрагменты текста на страницы которые заключены в нужный мне тег |
| Автор: Poseidon 7.7.2006, 00:24 | ||
| Ну так загони функцию в цикл Что-то вроди такого (опять "на коленке")
|
| Автор: Rondo 7.7.2006, 00:27 |
| Poseidon, респект! |
| Автор: Yanis 7.7.2006, 09:39 |
| Помоему регулярные выражения сильно упрощаю жизнь. |
| Автор: Poseidon 7.7.2006, 16:15 |
| Yanis, если бы я дал пример с TRegExpr, думаю он бы вообще ничего не понял а просто скопировал. А так хоть разберется с основами работы со строками ;) |
| Автор: Rondo 10.7.2006, 12:19 | ||
| Опять же в мемо загружаю текст, и хотелось бы чтоб там осталось только: Хотелось бы найти что находится между определенными тегами... На этот раз только в первом и последнем найденом теге и поместить найденый текст в отдельную строку
|
| Автор: Guedda 10.7.2006, 14:19 | ||
| Допустим, у тебя есть строка: <tag>Превед!</tag> Чтобы вытащить Превед! Необходимо проделать следующее:
Добавлено @ 14:21 Соответственно, если у тебя тег будет не <tag>, а какой либо другой, там уже будешь варьировать с MatchesMask и с copy (там по символам подберешь...) |
| Автор: Mechanic 10.7.2006, 14:21 | ||
А чем выделены теги? Если как в html, тогда поможет вот эта функа, что написана специально для разбора html тегов
|
| Автор: Sunr1se 10.7.2006, 14:29 | ||
насколько я понял, надо просто вставить текст, находящийся между определенными тегами, в отдельную строку? Тогда вот первое, что пришло в голову (уж извините за такой нехороший код).
Добавлено @ 14:31 Пока код писал, вон сколько народу уже откликнулось |
| Автор: Rondo 10.7.2006, 15:01 | ||
| Спасибо, ща все проверю Добавлено @ 15:12 Sunr1se, Неправильно понял, допустим у меня такой код.
Мне надо выдернуть из этого кода 14 156 608 и 210 125 741 (они в самом низу |
| Автор: Sunr1se 10.7.2006, 15:57 |
| Тогда сделай так: В цикле перебирай строчки, записывая в какую-то переменную номер строки, если в ней есть тег <tr>(ну или какой-то другой). Как только цикл закончится, воспользуйся функцией Mechanic'а, передав в нее эту самую строчку. |
| Автор: Rondo 10.7.2006, 16:13 | ||
Вообщем перелопатил я этот текст и получилось как и ожидал эти самые 2 числа
Толкько как разлечить что это 2 числа а не 6 числел, и отправить их на разные строки... И числа то могут быть разные |
| Автор: Sunr1se 10.7.2006, 16:15 |
| А ты не мог бы показать, каким образом лопатил текст? |
| Автор: BUGOR 10.7.2006, 16:18 |
| В данном случае однозначно рулят регулярки. Только в твоём примере первый и последний найденные теги какие? Я так понял надо найти всё, что в пределах тегов td и чтобы это были цифры, если так, то выражение будет выглядеть следующим образом: (?!(<td.*>(<b>)?)) [0-9 ]+(?=((</b>)?</td>)) Из твоего примера моё выражение выдирает следующее: 3 897 51 212 1 796 802 23 917 530 030 14 156 608 210 125 741 |
| Автор: Rondo 10.7.2006, 16:20 | ||
Еще Poseidon довал на днях
|
| Автор: BUGOR 10.7.2006, 16:20 |
| А, ну и если будешь работать с MatchCollection, то просто бери два последних элемента массива, если же с массивами работать не хочешь, то нужно дорабатывать выражение, чтобы оно выбирало текст между двумя последними тегами td, в принципе это несложно, если надо скажи, попробую составить. Добавлено @ 16:30 Rondo, объясни мне зачем писать огромные и тормозные функции, когда это всё красиво и элегантно умещается в одно регулярное выражение? |
| Автор: Rondo 10.7.2006, 16:38 |
| Неумею я пока ими пользоватся |
| Автор: Sunr1se 10.7.2006, 16:41 |
| Так ты передавай в функцию строки по отдельности. тогда будешь получать строку, в которой одно число. Удали из строки пробелы и приведи его к типу integer. http://anso.da.ru/ - здесь есть и компонент необходимый, и мануальчик небольшой по регулярным выражениям |
| Автор: BUGOR 10.7.2006, 16:51 |
| Rondo, Уже оффтопить начали, ну думаю модеры нас простят. Я учил регулярные выражения по книге: Фридл Дж. Регулярные выражения (2-е изд.), Питер 2003, 464 с., ISBN 5-272-00331-4 Есть в сети. Прочёл всего-лишь порядка 100 страниц, но при этом спокойно могу составлять довольно сложные регулярки. |
| Автор: Лысенак 10.7.2006, 18:37 | ||
http://www.regularexpressions.info/ |
| Автор: Rondo 10.7.2006, 18:54 |
| Нашел эту книгу, и правда легко )) http://foror.name/upload/regexp.zip |
| Автор: Eva_Adamova 3.5.2007, 03:22 |
| Пусть я отвечаю поздно, через полгода, но всё равно хочется сказать спасибо. У меня такая же проблемы была, с разбором таблиц в ХТМЛе, сейчас всё стало более менее ясно! Добавлено через 3 минуты и 18 секунд Вышеприведённая ссылка на книгу не работает, вот другая - http://natahaus.ifolder.ru/551395 |
| Автор: Yanis 3.5.2007, 06:52 |
| Приятно осозновать, что есть люди которые пользуются поиском. Eva_Adamova, |
| Автор: AlManZ 10.5.2007, 21:48 |
| Ну чтоб не создавать новый топик... Книга - да, отличная! А вот теперь еще бы где-нить взять эту библиотеку TRegExpr... ссылки, которые нашел уже не работают :(. Можно и на мыло, буду благодарен. |
| Автор: iddqd 10.5.2007, 22:28 |
| Да прибудем с тобой гугл. http://www.regexpstudio.com/ |
| Автор: AlManZ 10.5.2007, 22:38 |
| |