Ich glaube, manchmal sind die einfachsten Lösungen oft die besten. Ich entferne einfach alle Zeilenumbrüche und wende dann einen regulären Ausdruck an, um alle Image-Links zu finden:
Delphi-Quellcode:
function RemoveChars(const S, Chars: string): string; // Chars CaseSensitive;
// http://www.delphipraxis.net/184473-schnellstes-entfernen-von-chars-aus-einem-string-4.html
var
I, Index: integer;
Skip: array [Char] of boolean;
begin
FillChar(Skip[#0], Length(Skip) * SizeOf(Skip[#0]), 0);
for I := 1 to Length(Chars) do
Skip[Chars[I]] := true;
SetLength(Result, Length(S));
index := 0;
for I := 1 to Length(S) do
if not Skip[S[I]] then
begin
Inc(index);
Result[index] := S[I];
end;
SetLength(Result, index);
end;
procedure TForm1.btnTestClick(Sender: TObject);
var
S, L: string;
ThisImageLinksRegexObj: TRegEx;
AllImageLinks: TMatchCollection;
I: integer;
begin
S := TFile.ReadAllText('R:\Clipboard Text.txt');
S := RemoveChars(S, #10#13);
ThisImageLinksRegexObj :=
TRegEx.Create('https?://\S+\.(png|jpg|gif|bmp|jpeg|jpe|jp2|tiff|tif)',
[roIgnoreCase]);
AllImageLinks := ThisImageLinksRegexObj.Matches(S);
if AllImageLinks.Count > 0 then
begin
for I := 0 to AllImageLinks.Count - 1 do
begin
L := AllImageLinks[I].Value;
CodeSite.Send('AllImageLinks[i]', L);
end;
end
else
begin
CodeSite.Send('Keine Image-Links gefunden');
end;
end;