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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2023, 00:08   #1
iskurt
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 228
По умолчанию RegEx - помогите понять, что не так, не правильно ищет

Всем привет.
Ребят, помогите, уже часа три голову ломаю, нужен свежий взгляд.
Пишу обработку по разбору ссылок от поставщиков. Они приходят одно строкой, без пробелов, только запятые.
Пробую с помощью регулярных выражений.... но что-то пошло не так

вот исходная строка
"https://db.f-opt.com/img/detail/2710846.jpg?nowatermark,https://db.f-opt.com/img/detail/2710847.jpg?nowatermark,https://db.f-opt.com/img/detail/2710848.jpg?nowatermark,https://db.f-opt.com/img/detail/2710849.jpg?nowatermark,https://db.f-opt.com/img/detail/2710850.jpg?nowatermark,https://db.f-opt.com/img/detail/2710851.jpg?nowatermark,https://db.f-opt.com/img/detail/2710852.jpg?nowatermark,https://db.f-opt.com/img/detail/2710853.jpg?nowatermark,https://db.f-opt.com/img/detail/2710854.jpg?nowatermark,https://db.f-opt.com/img/detail/2710855.jpg?nowatermark,https://db.f-opt.com/img/detail/2710856.jpg?nowatermark"


Нужен такой результат
Код:
https://db.f-opt.com/img/detail/2710846.jpg?nowatermark
https://db.f-opt.com/img/detail/2710847.jpg?nowatermark
https://db.f-opt.com/img/detail/2710848.jpg?nowatermark
https://db.f-opt.com/img/detail/2710849.jpg?nowatermark
https://db.f-opt.com/img/detail/2710850.jpg?nowatermark
https://db.f-opt.com/img/detail/2710851.jpg?nowatermark
https://db.f-opt.com/img/detail/2710852.jpg?nowatermark
https://db.f-opt.com/img/detail/2710853.jpg?nowatermark
https://db.f-opt.com/img/detail/2710854.jpg?nowatermark
https://db.f-opt.com/img/detail/2710855.jpg?nowatermark
https://db.f-opt.com/img/detail/2710856.jpg?nowatermark

пробовал несколько вариантов.... либо всю строку выводит, либо ничего не выводит.
Помогите правильно выражение накатать.

пробовал:
'https://.*\,'
'https://.*mark'
'{https://.*mark}?,'

Код:
Procedure TForm1.GetURLs(url: string; num: Integer);
const 
  pattern = 'https://.*\,';
var
  MatchCollection : TMatchCollection;
  RegEx: TRegEx;
  I : Integer;
begin
  sMemo1.Clear;
  sMemo1.Lines.Add(url);
  sMemo1.Lines.Add('===========');

  RegEx := TRegEx.Create(pattern, [roIgnoreCase]);


  MatchCollection := RegEx.Matches(url);
  // Обход коллекции результатов обработки регулярного выражения
  for I := 0 to MatchCollection.Count - 1 do
    sMemo1.lines.Add(MatchCollection.Item[I].Value);

  // mDownloadFile(f, num);
end;
iskurt вне форума Ответить с цитированием
Старый 08.02.2023, 00:42   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

А нельзя просто по запятой нарезать с помощью StrUtils.SplitString? Если так хочется регулярки, то попробуйте '[^,]+'.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 08.02.2023, 00:49   #3
iskurt
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 228
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
то попробуйте '[^,]+'
Спасибо, получилось!
можете прокомментировать выражение. Я запутался, от малого знания.
"Ищем любой символ кроме запятой..." Так что ли?

или

"Ищем группу символов без запятой повторяющуюся несколько раз" ?

Последний раз редактировалось iskurt; 08.02.2023 в 00:53.
iskurt вне форума Ответить с цитированием
Старый 08.02.2023, 02:28   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Если рассматривать выражение целиком, то, думаю, можно сказать ищем подстроку длины 1 и более, состоящую из любых символов, кроме запятой.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 08.02.2023, 09:07   #5
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 960
По умолчанию

iskurt,
Код:
'https:\/\/.*?mark'
Алексей1153 на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с регулярными выражениями RegEx bdfy Microsoft Office Excel 1 14.09.2017 15:00
Паскаль: Помогите понять основу для написания простейшей программы. Не могу понять суть. romanya Паскаль, Turbo Pascal, PascalABC.NET 2 18.03.2016 20:35
RegEx помогите с выражением Gregor Общие вопросы Delphi 5 30.06.2015 09:13
не могу понять почему не правильно выводятся числа массива Nikitos_ Паскаль, Turbo Pascal, PascalABC.NET 7 31.05.2012 11:52