Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Проблема с регулярным выражением


Автор: mhalion 16.9.2007, 15:25
Все вродебы просто, но мне необходимо получить все что удовлетворяет моей регулярке. И не использовать ExecNext, а потом смотреть в Match[0].
Возможно ли получить и 'Сходненская' (Match[0]) и 'Москва' (Match[1]) после первого вызова Exec?
Код

var
    sMask,sAddress: string;
begin
    sMask :='(Сходненская)|(Москва)';
    sAddress :='г. Москва, ул. Сходненская, 22';

    with TRegExpr.Create do try
        Expression :=sMask;
        if Exec(sAddress) then
        begin
         repeat
                edtStatus.Text :=IntToStr(SubExprMatchCount);
                until not ExecNext;
        end;
    finally Free;
    end;
end;

Автор: W4FhLF 16.9.2007, 15:53
Тебе надо узнать есть ли такие слова в строке и посчитать сколько раз они там встречаются? Я что-то не совсем понял суть самой задачи, объясни поподробнее. 

Автор: mhalion 16.9.2007, 15:56
Вот такая регулярка sMask :='.*г.\x20*(.*)[,;\x20].*ул.\x20(.*)[,;\x20].*22.*';
И вот такая строка sAddress :='г. Москва, ул. Сходненская, 22';

Match[1] ='Москва,'
Match[2] ='Сходненская,'

Вопрос: Почему появляются запятые в конце? И как от них избавиться?

Добавлено через 7 минут и 41 секунду
Вроде бы проблему решил:
'.*г\x20*.\x20*([А-Яа-я]*).*ул.\x20*([А-Яа-я]*).*22.*'
Но всеравно до конца вот чего не понимаю. Что в процессе обработки строки по регулярке выбирается, как Match? 

Автор: mhalion 16.9.2007, 16:14
Как поставить пробел не используя \x20. Как будет выглядеть в таком слчае  - \x20*?

Автор: W4FhLF 16.9.2007, 16:35
Цитата(mhalion @  16.9.2007,  15:56 Найти цитируемый пост)
Но всеравно до конца вот чего не понимаю. Что в процессе обработки строки по регулярке выбирается, как Match?


REGEXPRU.HLP читал? 

Цитата(mhalion @  16.9.2007,  16:14 Найти цитируемый пост)
Как поставить пробел не используя \x20. Как будет выглядеть в таком слчае  - \x20*?


' *?'

Автор: mhalion 16.9.2007, 16:41
Читал бы не спрашива;) Скинь на мыло мне док

Автор: W4FhLF 16.9.2007, 16:44
аттач

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)