Форум программистов, компьютерный форум, киберфорум
palva
Войти
Регистрация
Восстановить пароль

Регулярные выражения в Delphi XE

Запись от palva размещена 19.12.2013 в 21:46
Показов 15527 Комментарии 0

Начиная с версии XE, в Delphi появились регулярные выражения. То есть, при помощи сторонних продуктов работать ними можно было и раньше, но теперь соответствующий юнит появляется вместе с установкой Delphi. Вот примеры использования.

Имеется ли вхождение? Да, имеется.
Delphi
1
2
3
4
5
6
7
8
9
{$APPTYPE CONSOLE}
uses RegularExpressions;
begin
  if TregEx.IsMatch('eksaek647dl', 'ek\d+') then
    WriteLn('Yes')
  else
    WriteLn('No')
// Yes
end.
А теперь нет - не тот регистр букв.
Delphi
1
2
3
4
5
6
7
8
9
{$APPTYPE CONSOLE}
uses RegularExpressions;
begin
  if TregEx.IsMatch('eksaek647dl', 'ek\d+') then
    WriteLn('Yes')
  else
    WriteLn('No')
// No
end.
Игнорируем регистр букв - опять найдено.
Delphi
1
2
3
4
5
6
7
8
9
{$APPTYPE CONSOLE}
uses RegularExpressions;
begin
  if TregEx.IsMatch('eksaeK647dl', 'ek\d+', [roIgnoreCase]) then
    WriteLn('Yes')
  else
    WriteLn('No')
// Yes
end.
Находим все вхождения.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{$APPTYPE CONSOLE}
uses RegularExpressions;
var
  m: TMatch;
begin
  m := TRegEx.Match('eksaek647dlgddek43gfd','ek\d+');
  while m.Success do
  begin
    WriteLn(m.Index, ' ', m.Length, ' ', m.value);
    m := m.NextMatch;
  end;
//5 5 ek647
//15 4 ek43
end.
Или, что то же самое, но в другом режиме использования, удобном, когда много строк проверяется на одно и то же регулярное выражение.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{$APPTYPE CONSOLE}
uses RegularExpressions;
var
  re: TRegex;
  mc: TMatchCollection;
  i: Integer;
begin
  re.Create('ek\d+');
  mc := re.Matches('eksaek647dlgddek43gfd');
  for i:=0 to mc.Count-1 do begin
    WriteLn(mc[i].Index, ' ', mc[i].Length, ' ', mc[i].value);
  end;
//5 5 ek647
//15 4 ek43
end.
Обратите внимание: TRegEx это не class, а record.

Замена и разбиение строк.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
{$APPTYPE CONSOLE}
uses RegularExpressions;
var
  s: String;
  ar: TArray<String>;
begin
  s := TregEx.Replace('55ek6saeK647dl', 'ek\d+', ' ', [roIgnoreCase]);
  WriteLn(s);
// 55 sa dl
  ar := TregEx.Split(s, ' s?');
// 3 a
  WriteLn(Length(ar), ' ', ar[1]);
end.
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru