Schrift
[thread]7386[/thread]

regulärer Ausdrücke: Zwei Regexp nicht dasselbe Resultat.



<< >> 4 Einträge, 1 Seite
smallish
 2005-10-23 17:57
#59156 #59156
User since
2005-10-13
28 Artikel
BenutzerIn
[default_avatar]
Hi zusammen!
Code: (dl )
my $dir = 'wer? ich? nein du!';

Wieso krieg ich bei:
Code: (dl )
1
2
$dir =~ /\?(.*?)$/;
#$1 eq ' ich? nein du!''

nicht dasselbe Resultat wie bei:
Code: (dl )
1
2
$dir =~ /^.*\?(.*?)$/;
#$1 eq ' nein du!'

.*? bedeutet doch die kleinst mögliche Menge wo es noch zu treffen kann oder? aber dies ist doch 'nein du!' und nicht ' ich? nein du!'?
J-jayz-Z
 2005-10-23 19:09
#59157 #59157
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ja, das stimmt schon so, wie du es sagst, aber das hast du deinenm Muster so nicht gesagt.
Das erste Muster geht bis zu einem Fragezeichen (das nach "wer") und gibt dir dann den Rest aus, bis zum Ende ($).
Das zweite Muster macht alles vom Anfang (^), bis zu nem Fragezeichen (in dem Fall das nach "ich", weil .* sehr gierig ist) und dann den Rest, bis zum Ende ($).
Das zweite Muster hätte so aussehen sollen, um es passend zu machen:
Code: (dl )
$dir =~ /^.*?\?(.*?)$/;

Das Fragezeichen nach dem * nimmt die Gierigkeit weg und matcht somit nur, bis zum ersten treffer (nach "wer")
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
pq
 2005-10-23 19:30
#59158 #59158
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=smallish,23.10.2005, 15:57].*? bedeutet doch die kleinst mögliche Menge wo es noch zu treffen kann oder?[/quote]
3 kleine fehler:
es bedeutet die kleinstmögliche menge nach rechts, wo es zutreffen kann.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
smallish
 2005-10-23 22:22
#59159 #59159
User since
2005-10-13
28 Artikel
BenutzerIn
[default_avatar]
[quote=pq,23.10.2005, 17:30]3 kleine fehler:
es bedeutet die kleinstmögliche menge nach rechts, wo es zutreffen kann.[/quote]
Der ?-Modifier begrenzt also nur nach rechts... Okey, ich glaub ich habs begriffen!
Danke! Das war mir irgendwie nicht klar!
PS: Sorry, für die anderen zwei Fehler :)
<< >> 4 Einträge, 1 Seite



View all threads created 2005-10-23 17:57.