![]() |
Portierung Perl nach Delphi - Problem mit Regular Expression
Hallo.
Ich bin kein Perl-User, muss aber eine Perl-Funktion in Delphi abbilden die eine RegEx nutzt mit der ich ein Verständnissproblem habe. Hier der Auszug der Perl Funktion:
Code:
Es geht hier um die Ausdrücke "m/001(\d{3})$/x" und "s/00(1\d{3})$//x". :glaskugel:
my $num = $_[0]; // Übergebener Parameter: Ein Integer 0..max(integer)
my @parts; my $count = 0; my $part; if ($num =~ m/001(\d{3})$/x) { $num =~ s/00(1\d{3})$//x; $part = $1; unshift @parts, [ $part, $count ]; $count += 2; } Erster scheint zu prüfen, ob im übergebenem Integer als Text die Sequenz "001xxx" vorkommt und wenn ja, dann hält $1 die gefunden Sequenz!? :gruebel: Zweiter scheint die gefundene Sequenz aus $num zu löschen. Aber warum "s/00(1\d{3})$//x" und nicht "s/001(\d{3})$//x"!? :gruebel: Ist zufällig jemand fit in dem Thema? |
Re: Portierung Perl nach Delphi - Problem mit Regular Expres
Ich denke mal es dürfte egal sein,
jedenfalls wird beim 2. Ausdruck die 1 mit zum Ergebnis gezählt. Also dürfte es m/00(1\d{3})$/x) so dann wohl besser aussehn/zusammenpassen. Zitat:
(1\d{3}) = die "1" steht mit in $1 und bei 1(\d{3}) steht die "1" nicht mit in $1 drin. |
Re: Portierung Perl nach Delphi - Problem mit Regular Expres
Danke, ich denke ich hab's nun verstanden.
Musste jedoch Perl usw. installieren und mit der PerlIDE ein wenig debuggen weil es mir nicht klar war, das die Zuordnung nach $1 in der =~ Auswertung der RegEx per \d{3} von rechts nach links läuft... :angel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:58 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