Thread ... schon wieder matching (3 answers)
Opened by worst_case at 2019-01-30 19:35

Linuxer
 2019-01-30 22:20
#189672 #189672
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Hast Du $endung wirklich hart kodiert? Oder liest Du es evtl. von Kommandozeile ein?
Wenn Du es einliest, hast Du den Zeilenumbruch entfernt?

Dann musst Du bedenken, dass der "." ein "Wildcard" ist, der auf jedes Zeichen zutreffen kann, so dass Du u.U. auch nicht erwünschte Dateien damit triffst.

Beispiel:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ perl -Mstrict -w 
my $ext = ".var";
my @filenames = qw( otto.var evar.txt nix.var.here );


print "einfacher Regex\n";

for my $file ( @filenames ) {
print $file, "\n" if $file =~ m/$ext/;
}

print "entwerte enthaltene Sonderzeichen wie .\n";
for my $file ( @filenames ) {
print $file, "\n" if $file =~ m/\Q$ext\E/;
}

print "entwerte Sonderzeichen und verankere Regex.\n";
for my $file ( @filenames ) {
print $file, "\n" if $file =~ m/\Q$ext\E$/;
}

^D


Ergibt hier:

Code: (dl )
1
2
3
4
5
6
7
8
9
einfacher Regex
otto.var
evar.txt
nix.var.here
entwerte enthaltene Sonderzeichen wie .
otto.var
nix.var.here
entwerte Sonderzeichen und verankere Regex.
otto.var
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread ... schon wieder matching