Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2009, 16:42   #1
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию Пропарсить стоку регулярными выражениями

Всем привет!
Не знал куда написать, пушу сюда.
Короче в Delphi есть стока которую надо пропарсить
Ну допустим
Цитата:
getDateTime (dd.mm.yyyy (hh:nn:ss:zzz)) (true)
Первое слово - команда, а в скобках параметры, т.е. к getDateTime прилагаются 2 параметра.

надо получить как строки команду и параметры
Т.е. результат должен быть такой (красным цветом)
Цитата:
getDateTime (dd.mm.yyyy (hh:nn:ss:zzz)) (true)
Всё остальное не нужно. Какое выражение должно быть?

//Вот Delphi
Код:
procedure Tmain_form.Button1Click(Sender: TObject);
var
e: tRegExpr;
c, sc: integer;
begin
   listBox1.Clear;
   e := tRegExpr.Create;
   e.Expression := edit1.Text; // Вырожение

   if e.Exec(memo1.Text) then 
   repeat
      listBox1.Items.Add(e.Match[0]);
   until not e.ExecNext;
   e.Free;
end;

Последний раз редактировалось Altera; 02.10.2009 в 16:44.
Altera вне форума Ответить с цитированием
Старый 02.10.2009, 16:46   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

у тя ж все-ж красное
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 02.10.2009, 16:56   #3
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
у тя ж все-ж красное
Скобки у меня не красные, и пробелы...
Altera вне форума Ответить с цитированием
Старый 02.10.2009, 16:58   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

вот строка
Цитата:
'getDateTime (dd.mm.yyyy (hh:nn:ss:zzz)) (true)'
- что из нее надо выделить?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 02.10.2009, 17:03   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

1 способ: ищем первый пробел в строке, выделяем все до него, затем пропускаем скобку и выделяем все до второй скобки.
2 способ: заводим базу (тхт, БД не важно) и ищем в строке слово-команду. Дальше действуем по алгоритму 1.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 02.10.2009, 17:09   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

оператор POS вам в помощь
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 02.10.2009, 18:45   #7
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Какоето несоответствие репутации и вопроса ...

Может пригодится - алгоритм со скобками думаю будет понятен

http://programmersforum.ru/showthread.php?t=57287
Lime вне форума Ответить с цитированием
Старый 03.10.2009, 20:45   #8
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от Lime Посмотреть сообщение
Какоето несоответствие репутации и вопроса ...
Ага. Очень ты внимательный....

Цитата:
Сообщение от Lime Посмотреть сообщение
Может пригодится - алгоритм со скобками думаю будет понятен

http://programmersforum.ru/showthread.php?t=57287
Думаете я не додумался pos юзать. Так ведь регулярные выражения на то и существуют. Щас по другому вообще сделаю...и
----------
//А выражение то что, никто не знает?

Последний раз редактировалось Altera; 03.10.2009 в 20:53.
Altera вне форума Ответить с цитированием
Старый 03.10.2009, 21:10   #9
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

В голову ничего лучше не пришло(писал прямо здесь, так что скорее всего много ошибок)
Код:
var
s:string;
begin
listbox1.Clear;
s:=StringReplace(edit1.Text, ' ', '',[rfReplaceAll, rfIgnoreCase]);
if pos('(',s)<>0 then
begin
listbox1.Items.Add(copy(s,1,pos('(',s)-1));
delete(s,1,pos('(',s)-1);
while pos('(',s)<>0 do
begin
if pos(')(',s)<>0 then
begin
if StringReplace(copy(s,2,pos(')(',s)), ' ', '',[rfReplaceAll, rfIgnoreCase])<>'' then
begin
listbox1.Items.Add(copy(s,2,pos(')(',s)-2));
delete(s,1,pos(')',s));
end;
end else
begin
end;
if StringReplace(copy(s,2,pos(')',s)), ' ', '',[rfReplaceAll, rfIgnoreCase])<>'' then
begin
listbox1.Items.Add(copy(s,2,pos(')',s)-2));
delete(s,1,pos(')',s));
end;
end;
end;
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 03.10.2009, 23:02   #10
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Цитата:
Какоето несоответствие репутации и вопроса ...
Фи, некультурно как то. Напоминает фразу - " А еще очки одел ..."
Извините за OFFTOP. Не удержался.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помощь с регулярными выражениями WebSQLNeeder PHP 8 09.07.2008 17:57
Задачка с регулярными выражениями Timmy PHP 1 25.06.2007 10:18