Thread Fehler: Nested quantifiers in regex
(4 answers)
Opened by PETER_PAN2009 at 2010-11-09 12:26
Ganz einfach. Das was in $file_name steht, wird so wie du es schreibst als Regex expandiert.
Das heißt: test/x++/stream wird als Regex angesehen! Der Haken: x++ ist so kein sinnvolles Regex für Perl. Perl weißt nicht, auf was der Quantifier + (mehrfach vorhanden!) sich bezieht, da keine Klammerung im Regexe stattfand. Du willst aber den wirklichen Inhalt verwenden, nicht den String als Regex, da musst du das ganze mit \Q \E einschließen, dann wird es als "normaler Text" angesehen. Siehe auch perlretut So geht's: Code (perl): (dl
)
1 2 3 my $fullname = 'D:/test/x++/stream.h'; my $file_name = 'test/x++/stream'; $fullname =~ s{\Q$file_name\E.+}{teststring}gmxi; Mach dir nix draus, über sowas wie Vergessen, das Regex auszuschalten, fällt fast jeder mal früher (als Anfänger) und auch später (als Fortgeschrittener bei Unachtsamkeit). ;) Last edited: 2010-11-09 12:47:47 +0100 (CET) |