Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi]Работа с подстроками 
:(
    Опции темы
pegorov
  Дата 25.1.2009, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



Имеется длинный текст такого вида:

Код

некие ненужные данные
<подстрока1>11111<подстрока2>
<подстрока1>22222<подстрока2>
<подстрока1>33333<подстрока2>
некие ненужные данные


Нужно распарсить этот текст так, чтобы в результате получить 
11111
22222
33333

Собственно, проблема в том, как выдрать подстроку, содержащуюся между подстроками <подстрока1> и <подстрока2>. Нагугленный вариант процедуры function inside(const Search, Front, Back: string): string; при некоторых вариантах работает некорректно. К примеру при
Код

txt:='<div> <a style=font-size:11px> (something) </a> </div>';
memo2.Lines.add(inside(txt, '<div>', '</div>'));

программа намертво подвисает =)

Буду благодарен советам, как можно реализовать эту процедуру.
PM MAIL   Вверх
Данкинг
Дата 25.1.2009, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Какая конечная-то задача стоит?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
THandle
Дата 25.1.2009, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



pegorov, возможно регулярки подойдут:

http://forum.vingrad.ru/articles/topic-213075.html
PM   Вверх
pegorov
Дата 25.1.2009, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



Цитата(Данкинг @ 25.1.2009,  01:18)
Какая конечная-то задача стоит?

Конечная задача - распарсить html =)
Текущая задача - выдрать подстроку, располагающуюся между двумя другими подстроками.
PM MAIL   Вверх
Christoph
Дата 25.1.2009, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



Если у тебя между подстроками цифры, то регулярное выражение будет такое:

Код

RegExp.Expression := '\d{5}';


Но я сомневаюсь что нужно, извлечь эти цифры, ты лучше скажи что тебе надо извлечь? название файлов, мыло или еще что то...


--------------------
user posted image
PM MAIL ICQ   Вверх
pegorov
Дата 25.1.2009, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



Цитата(Christoph @ 25.1.2009,  16:12)
Если у тебя между подстроками цифры, то регулярное выражение будет такое:

Код

RegExp.Expression := '\d{5}';


Но я сомневаюсь что нужно, извлечь эти цифры, ты лучше скажи что тебе надо извлечь? название файлов, мыло или еще что то...

Названия файлов там будут, так что вариант с цифрами не прокатит =(
Ну вот пример кусочка, который нужно распарсить:
Код

<div><a href="23hh34.htm" style="font-size:11px">Wolfgang Amadeus Mozart - part1.rar</a></div>
<div><a href="34g534.htm" style="font-size:11px">openoffice30a.7zip</a></div>
<div><a href="23dsdd.htm" style="font-size:11px">linux_deli_boot.img</a></div>

То есть нужно просто выдирать то, что содержится между style="font-size:11px"> и </a></div>
Вообще есть готовая функция inside - вот здесь, к примеру: http://www.delphi-club.ru/delphi/extended_..._functions.html
Но с некоторыми строками работает она некорректно, причины я пока понять не могу.
PM MAIL   Вверх
Christoph
Дата 25.1.2009, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



Вот тебе регулярное выражение 
Код

[^\.<>"]+(\.[^.h<]+)


Если не получится написать прогу, сообщи - поможем


--------------------
user posted image
PM MAIL ICQ   Вверх
pegorov
Дата 25.1.2009, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



Так, пойду почитаю про регулярные выражения =)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0637 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.