regex | string durchsuchen und aufsplitten
mike
- perl
0 TorstenA0 mike
0 roman lenz0 mike0 roman lenz0 mike
0 TorstenA
Hallo Gemeinde!
Ich habe ein kleines Regex-Perl Problem.
Ich habe einen string (z.B. 1|test|ix|2|test|et|3|test|sfdf);
ich will den String mit hilfe einer Schleife und der Macht der Regex durchsuchen splitten und in ein Array schreiben >> $Array[0] = 1|test|ix
[1] = 2|test|et
[2] = 3|test|sfdf
Ich hab aber im moment ein ziemliches BlackOut und mir fällt beim besten willen kein Lösungsansatz ein. Habt ihr eine Ahnung mit welchem regex ich dieses Problem bewerkstelligen könnte?
Danke für jede hilfe
mike
Hi,
Ich habe einen string (z.B. 1|test|ix|2|test|et|3|test|sfdf);
ich will den String mit hilfe einer Schleife und der Macht der Regex durchsuchen splitten und in ein Array schreiben >> $Array[0] = 1|test|ix
[1] = 2|test|et
[2] = 3|test|sfdf
Das Schema, das du suchst, müsste denke ich so aussehen:
$muster = '\d|[a-zA-Z]{1,}|[a-zA-Z]{1,}';
Nun könntest du mit Klammerung Teilausdrücke extrahieren:
my $test = "1|test|ix|2|test|et|3|test|sfdf";
$test =~ /^($muster)|($muster)|($muster)$/;
my @ergebnis = ($1, $2, $3);
Ich denke, dass es theoretisch so geht (habe keine Möglichkeit zum Testen hier), wenn ich dein Anliegen richtig verstanden habe.
Viele Grüße
Torsten
Hi Torsten
my $test = "1|test|ix|2|test|et|3|test|sfdf";
$test =~ /^($muster)|($muster)|($muster)$/;
Dieses Muster ist mir schon klar aber ich brauche ein Suchmuster das ich in eine Schleife einbauen kann und somit beliebig viele gleiche muster in einem String finden und in ein Array extrahiere kann.
my @ergebnis = ($1, $2, $3);
Ich denke, dass es theoretisch so geht (habe keine Möglichkeit zum Testen hier), wenn ich dein Anliegen richtig verstanden habe.
An sich schon aber ....
ich habe die Variable $_ in dieser ist ein String bestehend aus verschieden vielen kombinationen des zu extrahierenden musters. Das ganze steht in einer while(DATEI) schleife. Jetzt brauch ich ein regex muster das mir den String durchsucht dann beim ersten muster stehen bleibt und es extrahiert dann weitersucht und wieder das nächste gefundene muster extrahiert etc. etc..
Beim nächsten durchlauf der while schleife kommt wieder ein String mit diesem Muster daher bis zum ende des files.
Hat vielleicht jemand eine Ahnung wie das funktionieren könnte?
gruß mike
hi mike
probier das mal
push @array, $string=~/\d|.+?|.+?/g;
ich habs nicht getestet mehr dazu findest du hier
[link] http://selfhtml.teamone.de/cgiperl/sprache/regexpr.htm#allgemeines [/link]
bis bis roman
hi roman
Danke für der Lösungsansatz mit einiges an umformung und noch ein bischen feinschliff hat es wunderbar funktioniert!
gruß mike
hi mike
Schreib doch mal was du geänderst hast ich will doch aus meinen fehlern lernen :-)
bis bis roman
Hi,
hm, irgendwie hatte ich dich wohl nicht richtig verstanden, aber da du jetzt die Lösung gefunden hast, wäre es schön, wenn du sie noch als Ergänzung für die Nachwelt posten würdest.
Viele Grüße
Torsten