Форум программистов, компьютерный форум, киберфорум
Delphi: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для NotAffraid
9 / 9 / 6
Регистрация: 13.09.2012
Сообщений: 136

Регулярные выражения (preg.match_all)

04.11.2012, 01:26. Показов 1728. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, господа!
Хочу Вас попросить помочь мне в составлении выражения.
Не получается и всё, сколько не пытался.

Значения бывают такие: "1 380 ", "643 (47%) ", "900 ", "47% ", "525 762 ".
Нужно составить выражение так, чтобы все эти значения проходили.
А ещё в конце каждого значения пробел (как вы заметили).

Вообще никогда не работал с выражениями, (может чу-чуть).
Составил такое "уродище" -----> ([^\S]+(.*)\s)$
Но оно пропускает перенос на следующую строку, мои попытки работать с \n увенчались часами просиживания.
В memo1 почему появляется пустая строка (без пробела, тоесть не выделяется).
Как быть, чтобы убрать пустую строку.
Прошу вас помочь мне

Часть кода в котором я использую регулярные выражения

Delphi
1
2
3
4
5
6
7
8
for i := 0 to Web.OleObject.Document.all.length - 1 do
    begin
      if (Web.OleObject.Document.all.item(i).classname=clas) then
        if (preg.match_all('\([^\S]+(.*)\s)$\', Web.OleObject.Document.all.item(i).innerText, data)) then
          begin
              Memo1.Lines.Add(data[1].Text);
          end;
    end;
Миниатюры
Регулярные выражения (preg.match_all)  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.11.2012, 01:26
Ответы с готовыми решениями:

Регулярные выражения и TRegExpr
Использую объект RegExpr - регулярные выражения. Поиск по сайту - парсинг. Результаты парсинга складываются в TStringList. Все вделано в...

Регулярные выражения
Добрый день, у меня возникла задача написать проверку для строки. В строковой переменной содержится текст. Необходимо найти и...

Регулярные выражения
имеется текст: Карусельспутниковые Animal PlanetDiscovery ChannelDiscovery ScienceDiscovery WorldDisney ChannelDIVA...

6
 Аватар для Alex_pac
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
04.11.2012, 05:07
прежде чем парсить можно отладить выражение в прилагаемой тестовой программе

http://jqbook.narod.ru/delphi/preg.htm << там

Далее там прилагается документация на регулярные выражения в формате CHM

http://jqbook.narod.ru/files/d... .0.952.chm << вот это

основное отличие от оригинальной документации это PHP подобный синтаксис выражений

Code
1
/выражение/модификаторы
список модификаторов

i - игнорирование регистра
r - Не стандартный модификатор. Если включен, то диапазоны вида а-я включают также букву 'ё', А-Я включают 'Ё', а а-Я включает вообще все русские буквы.
s - Воспринимать входной текст как одну строку. При этом метасимвол ".'' совпадает с любым символом, если же этот модификатор выключен, то он не совпадает с разделителями строк
g - ЕСЛИ ОТСУТСТВУЕТ ТО : Не стандартный модификатор. Выключая его Вы переключаете все повторители в "не жадный" режим (по умолчанию этот модификатор включен). Т.е. если его отключить, то все '+' работают как '+?', '*' как '*?' и т.д.
m - Воспринимать входной текст как многострочный, при этом метасимволы "^'' и "$'' будут совпадать не только в начале и конце текста в целом, но и в начале и в конце всех имеющихся в тексте строк
x - Позволяет форматировать шаблон чтобы обеспечить более легкую читаемость

Добавлено через 5 минут
if (preg.match_all('\([^\S]+(.*)\s)$\', Web.OleObject.Document.all.item(i).inner Text, data)) then
begin
Memo1.Lines.Add(data[1].Text);
end;
Фукнция preg.match_all записывает результаты в Двумерный строковый список TPregArray , данном случае он тут обозначен как data

ПОСЛЕ ИСПОЛЬЗОВАНИЯ РЕЗУЛЬТАТОВ СЛЕДУЕТ ОЧИСТИТЬ ЛИСТ через data.free; иначе будет утечка памяти
1
 Аватар для NotAffraid
9 / 9 / 6
Регистрация: 13.09.2012
Сообщений: 136
04.11.2012, 09:58  [ТС]
Не разобрался, в этих ключах, тут черт голову сломит.
Сколько не пытался, все равно пустая строка появляется в мемо.
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
04.11.2012, 10:27
Цитата Сообщение от NotAffraid Посмотреть сообщение
Составил такое "уродище" -----> ([^\S]+(.*)\s)$
Но оно пропускает перенос на следующую строку
Замените \s на \h (если оно его поддерживает) или на [^\S\r\n] или [ \t] (пробел или таб).
1
 Аватар для NotAffraid
9 / 9 / 6
Регистрация: 13.09.2012
Сообщений: 136
04.11.2012, 10:35  [ТС]
Всем спасибо, разобрался
0
 Аватар для Alex_pac
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
04.11.2012, 11:57
я так понял ТС надо просто отпрасить все строки и все

/.+/
Миниатюры
Регулярные выражения (preg.match_all)  
1
 Аватар для NotAffraid
9 / 9 / 6
Регистрация: 13.09.2012
Сообщений: 136
04.11.2012, 19:21  [ТС]
Цитата Сообщение от Alex_pac Посмотреть сообщение
я так понял ТС надо просто отпрасить все строки и все

/.+/
не все, я уже разобрался как, благодарю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.11.2012, 19:21
Помогаю со студенческими работами здесь

Регулярные выражения
Какое регулярное выражение подойдет для вытаскивания ip адреса из этого кода: &lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0...

Delphi!? Регулярные выражения?
procedure TForm1.Button2Click(Sender: TObject); var s:string; i:integer; danye:array of zDanye; regvyr:TRegExpr; ...

есть ли в Delphi регулярные выражения?
есть ли в Delphi регулярные выражения?

Регулярные выражения RegExpr, как не заменять, а просто добавить?
как сделать чтоб оно не заменяло, а вставляло регулярку, т.е. то что является рег. выражением, а то я пока только заменять научился вот...

Delphi и регулярные выражения! Почему ошибка эта постоянно, не понимаю, см. код?
unit unAnal; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru