• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Регулярные Выражения Regexpr

Sascha Оффлайн

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,562
Баллы
155
1.png
В этом уроке мы с вами поговорим о регулярных выражениях в Delphi, а именно RegExpr.
Очень часто, создавая свои программы требуется спарсить информацию с интернета. Например, баланс с сайта кошелька, или кол-во баллов и тд. Этот процесс называется парсинг.

Т.е в этом уроке мы научимся парсить информацию с помощью регулярных выражений RegExpr.

Но для начала нам нужно установить RegExpr в Delphi.

Как установить?

Для установки и подключения модуля необходимо поместить файл regexpr.pas в папку с нашим проектом.

У меня путь такой:
Код:
C:\Program Files\Borland\Delphi7\Lib)
В директиве uses добавить regexpr
2.png
Т.е Создаем новый проект, нажимаем File -> Save Project As -> <Ваша папка>.
И в эту папку кладем скачанный нами файл regexpr.pas

Как использовать?

Теперь нужно объявить переменную класса TRegExpr. После этого присваиваем свойству InputString текст, в котором будет осуществляться поиск по определенной маске. А саму маску задаем в свойстве Expression.

В классе TRegExpr есть некая функция Exec которая выполняет поиск по тексту.
Если найдены соответствия, то ф-ия выдает значение true.
Если соответствия отсутствуют, то выдает значение false.

Получить текст, который соответствует маске можно с помощью переменной Match[1], где [1] — ID.

Ну а теперь перейдем к практике. Мы будем парсить из некого текста <a href="

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

">Site name</a> — саму ссылку [

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

или название Site name.

Создадим новый проект, кинем на форму кнопку, создадим событие кнопки OnClick и пишем следующее:
Код:
var
RegExp: TRegExpr;
begin
RegExp := TRegExpr.Create;
RegExp.InputString :='<a href="http://domain.com">Site name</a>';
RegExp.Expression := 'href="(.*?)">(.*?)<';
if RegExp.Exec then
begin
ShowMessage(RegExp.Match[1]);
ShowMessage(RegExp.Match[2]);
end;
RegExp.Free;
Объясню каждую строчку:
RegExp: TRegExpr — объявляем переменную RegExp класса TRegExpr.
RegExp := TRegExpr.Create — активируем переменную RegExp.
RegExp.InputString :='<a href="

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

">Site name</a>' — задаем значение свойству InputString.
RegExp.Expression := 'href="(.*?)">(.*?)<' — указываем маску в свойстве Expression.
if RegExp.Exec then — если ф-ия Exec находит совпадения по маске, то.
ShowMessage(RegExp.Match[1]) — показывает в сообщении первый результат.
ShowMessage(RegExp.Match[2]) — второй результат.

Аналог preg_match_all или как вывести все совпадения?

Для того, чтобы получить не только первое совпадение, но и все последующие, можно использовать следующую конструкцию:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
RegExp: TRegExpr;
begin
RegExp := TRegExpr.Create;
RegExp.InputString := 'Delphi <a href="tdlite.exe">download</a>JavaScript<a href="js.exe">download</a> ';
RegExp.Expression := 'href="(.*?)"';
if RegExp.Exec then
repeat
  ShowMessage(RegExp.Match[1]);
until not RegExp.ExecNext;
RegExp.Free;
end;
Скачать:

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

 

Вложения

Вверх Снизу