AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Regulärer Ausdruck für Hexzahlen

Ein Thema von Ghostwalker · begonnen am 30. Mär 2018 · letzter Beitrag vom 30. Mär 2018
 
SProske

Registriert seit: 16. Feb 2015
Ort: Halle/S.
116 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: Regulärer Ausdruck für Hexzahlen

  Alt 30. Mär 2018, 13:08
Werden in einem regulären Ausdruck sogenennate "capturing groups" wiederholt, so wird nur der letzte Treffer gespeichert, bspw.

(.{2})+ auf einen string abcd losgelassen ergibt als Gesamtmatch wieder abcd, die erste Gruppe enthält aber nur cd. Das ist nichts delphi-spezifisches, sondern gilt für alle PCRE Implementierungen (es gibt aber durchaus Regex-Implementierungen, die erlauben alle Instanzen der Gruppe zu prüfen, z.B. in .net)

Für das was du erreichen willst, gibt es quasi zwei Möglichkeiten
- in einem ersten Schritt den kompletten Hex-String extrahieren und dann in einem zweiten Schritt in 2er Paare unterteilen
- die Nutzung von \G um nach einem erfolgten Match an der selben Stelle wieder anzusetzen

z.B. so:

Delphi-Quellcode:
program Hello;

uses
  System.RegularExpressions;

const
  HEX_STR = '$aabbcc';
var
  M: TMatch;
begin
  M := TRegex.Match(HEX_STR, '(?:^\$?|\G(?!^))([[:xdigit:]]{2})');
  while M.Success do
  begin
    WriteLn(M.Groups[1].Value);
    M := M.NextMatch;
  end;
  ReadLn;
end.
Ich verwende hier die vordefinierte Klasse [[:xdigit:]] , die [a-fA-F0-9] entspricht. Dein [a-f,A-F,0-9] matcht btw. auch Kommas.

Wenn du sicher gehen willst, dass du auch wirklich einen Hex-String mit einer geraden Anzahl von Stelle hast, kann an das Ende des Pattern noch ein (?=(?:[[:xdigit:]]{2})+$) .
Sebastian

Geändert von SProske (30. Mär 2018 um 13:13 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz