Regular Expression negieren
Cruz
- perl
0 Sung-JoonPark0 K@rl0 brand0 Kess
Hallo ihr Perl Wizards,
wer von euch kann mir erzählen wie ich eine Regular Expression negieren kann? Also in einem String alles finden, was NICHT auf mein Suchmuster passt.
z.B.
$string="hallo";
$string =~ m/ll/;
dann steht im $& "ll",
wie kriege ich denn stattdessen "hao" in $&?
Gruß
Cruz
Hallo ihr Perl Wizards,
wer von euch kann mir erzählen wie ich eine Regular Expression negieren kann? Also in einem String alles finden, was NICHT auf mein Suchmuster passt.
z.B.
$string="hallo";
$string =~ m/ll/;dann steht im $& "ll",
Hi Cruz !
Ich habe leider keinen Perl - Compiler "zur Hand" , d.h. ich weiss leider nicht ob es klappt aber versuche es doch
mal mit
$string = "Hallo ";
$string2 = split (/ll/, $string);
Viel Glück !
versuche es doch
mal mit
$string = "Hallo ";
$string2 = split (/ll/, $string);Viel Glück !
Das ist leider nicht so der Hit, weil ich das Ergebnis dann in 2 Variablen habe, die ich erst zusammenfügen muss. Aber trotzdem vielen Dank!
Cruz
Das ist leider nicht so der Hit, weil ich das Ergebnis dann in 2 Variablen habe, die ich erst zusammenfügen muss. Aber trotzdem vielen Dank!
Wo ist das Problem, Cruz?
der Dot-Operator in Perl ist sooo schön universell.
btw: der thread beweißt mal wieder: there is more than one way to do it ;-)
$string="hallo";
$string =~ m/ll/;dann steht im $& "ll",
wie kriege ich denn stattdessen "hao" in $&?
Aus der hohlen hand kann ich das momentan auch nicht beantworten, denn ich mache das immer so:
$string =~ m/^(.*)(ll)(.*)$/;
dann steht in $1 "ha"
.. in $2 "ll"
.. in $3 "o"
es gibt aber auch spezialvariablen für das, was vor dem gefundenen teilstring steht und für das danach -
<wühl> ... </wühl>
ah! da haben wir es ja:
$& gibt das gefundene Muster zurück
$1,$2,$3,... enthält das Muster der 1.,2.,3.,... runden Klammer
$+ enthält das Muster der letzten runden Klammer
$` enthält die Zeichenkette, die vor dem gefundenen Muster steht
$' enthält die Zeichenkette, die hinter dem gefundenen Muster steht
ciao
K@rl
Hallo ihr Perl Wizards,
wer von euch kann mir erzählen wie ich eine Regular Expression negieren kann? Also in einem String alles finden, was NICHT auf mein Suchmuster passt.
diese Frage stellte ich mir auch vor kurzem (die Antwort ein paar Threads weiter unten: <56521.html>)
mfG
BRAND
Hallo Cruz,
z.B.
$string="hallo";
$string =~ m/ll/;dann steht im $& "ll",
wie kriege ich denn stattdessen "hao" in $&?
durch ersetzen erreichst du dein Ziel:
$string = "hallo";
if ($string =~ /ll/) {
$string =~ s/ll//;
}
print $string;
Viele Gruesse
Kess
Hallo,
nur der Vollstaendigkeit halber: Falls du alle ll rausfiltern willst, musst du den global modifier g verwenden:
$string = "hallo";
if ($string =~ /ll/) {
$string =~ s/ll//g;
}
Johannes