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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярные выражения - нужна помощь, разъясните ламеру 
:(
    Опции темы
NibiluK
Дата 24.7.2006, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нужно написать прогу-поисковик. То есть даю программе текст, а она должна в нём что-либо находить.
вот собственно сами регулярные выражения:
. (точка) - любой (но только один символ);
^- начало строки (например: А2 соответствует любой строке, в начале которой стоит
символ 2);
$ - конец строки (например: 1$ соответствует любой строке, в конце которой находится if);
* - нуль или несколько повторений предыдущего символа или точки.
Символы ^ и $ внутри регулярного выражения не считаются метасимволами.
Подскажите пожалуйста, как это дело реализовать 
PM MAIL   Вверх
_hunter
Дата 24.7.2006, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



взять готовое решение (TRegExp) и преобразовать ввоимую строку в оответствии с его синтаксисом 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
NibiluK
Дата 27.7.2006, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Как искать текст (конкретное буквосочетание) я разобрался, а как быть с использованием метасимволов? 
PM MAIL   Вверх
NibiluK
Дата 27.7.2006, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Из примера-исходника выдрал код:

Код

unit TRegExprRoutinesMain2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons;

type
  TfmTRegExprRoutines = class(TForm)
    grpReplace: TGroupBox;
    lblSearchIn: TLabel;
    memSearchIn: TMemo;
    lblReplaceWith: TLabel;
    btnReplace: TBitBtn;
    edReplaceWith: TEdit;
    lblSearchFor: TLabel;
    edSearchFor: TEdit;
    memReplaceRes: TMemo;


    procedure btnReplaceClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fmTRegExprRoutines: TfmTRegExprRoutines;

implementation

uses RegExpr;

{$R *.DFM}


procedure TfmTRegExprRoutines.btnReplaceClick(Sender: TObject);
 begin
  memReplaceRes.Text := ReplaceRegExpr (edSearchFor.Text, memSearchIn.Text, edReplaceWith.Text);
 end;

end.


Он, как видите, заменяет слова. Хочу чтобы он найденые слова просто выделял.... 
PM MAIL   Вверх
ASGDeveloper
Дата 30.7.2006, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


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

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



Цитата(NibiluK @  24.7.2006,  11:51 Найти цитируемый пост)
Нужно написать прогу-поисковик. То есть даю программе текст, а она должна в нём что-либо находить.

Хм, а модуль Masks не подойдет? 
PM MAIL   Вверх
creas0ft
Дата 5.8.2006, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Хм... А если расширить вопрос.
Есть текст шаблон.
В нем заданы некие предустановленные теги {k1} {k2} {k3}
и у тегов могут быть параметры {k5 param=value}
Какие есть уже готовые модули для такого?!
--------------------
Форум программистов уклонистов в сторону сео-шмео
PM MAIL WWW ICQ   Вверх
Yanis
Дата 8.8.2006, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



creas0ft
Эту задачу тоже можно решить с помощью TRegExpr. Советую скачать компонент и прочитать справку по нему.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
NibiluK
Дата 20.9.2006, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Можно ли заставить этот код искать с помощью компонента TRegExp?

Код


procedure TForm1.FindDialog1Find(Sender: TObject);

var
 Buff,P,FT: PChar;
 BuffLen: Word;
begin
 with Sender as TFindDialog do
  begin
   GetMem(FT, Length(FindText) + 1);
   StrPCopy(FT, FindText);
   BuffLen:= Memo1.GetTextLen + 1;
   GetMem(Buff, BuffLen);
   Memo1.GetTextBuf(Buff, BuffLen);
   P:= Buff + Memo1.SelStart + Memo1.SelLength;
   P:= StrPos(P, FT);
   if P=nil then MessageBeep(0)
   else
    begin
     Memo1.SelStart:= P - Buff;
     Memo1.SelLength:= Length(FindText);
    end;
   FreeMem(FT, Length(FindText) + 1);
   FreeMem(Buff, BuffLen);
  end;
end;

PM MAIL   Вверх
Alexeis
Дата 20.9.2006, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Так этот код и так уже что-то ищет. Что конкретно нужно искать и по какому шаблону?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
NibiluK
Дата 20.9.2006, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В том то и дело, что мне нужно искать каждый раз по разному шаблону, то есть он должне вводиться извне. Всё, чего я смог добиться при использовании TRegExprоиск по жёстко заданному шаблону, что мне не подходит. Искать нужно слова. Найденное слово должно оттеняться. При этом нужно чтобы код реагировал на метасимволы, вводимые в строке поиска.

Это сообщение отредактировал(а) NibiluK - 20.9.2006, 16:54
PM MAIL   Вверх
Elfebet
Дата 20.9.2006, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

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



Цитата

В том то и дело, что мне нужно искать каждый раз по разному шаблону

так не бывает... ну ты ведь для себя какой-то стандарт придумал? или хотя бы пример покажи как оно должно работать?


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
NibiluK
Дата 20.9.2006, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот смотри, например у меня есть какой-то текст. В нём надо найти, скажем, все слова, начинающиеся на 'wh'. А потом, например, слова, заканчивающиеся на "е". В задании указывается что при этом обязательно должны использоваться метасимволы. Обычный поисковик не подходит поэтому, т.к. он эти метасимволы не воспринимает.
PM MAIL   Вверх
Alexeis
Дата 20.9.2006, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(NibiluK @  20.9.2006,  16:53 Найти цитируемый пост)
При этом нужно чтобы код реагировал на метасимволы, вводимые в строке поиска.

Так их просто заэкранировать нужно и все.

Цитата(Elfebet @  20.9.2006,  16:57 Найти цитируемый пост)
так не бывает... ну ты ведь для себя какой-то стандарт придумал?

Это еще почему, задал новое выражение и вот новый поиск... 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Elfebet
Дата 20.9.2006, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

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



Цитата

Это еще почему, задал новое выражение и вот новый поиск...  

я имел ввиду что правила поиска везде присутствует, ну типа хочеш найти все слова на чинающие на букву а - а*, хочеш найти слова заканчивающие на у - *у, хошеч найти слово "превед" (но не помниш как пишется чере и или через е) - пр_в_д. вот что я имел ввиду...


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
NibiluK
Дата 20.9.2006, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(alexeis1 @  20.9.2006,  17:08 Найти цитируемый пост)
Так их просто заэкранировать нужно и все.

А это как, можно поподробнее?
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.0573 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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