Schrift
[thread]7992[/thread]

komisches regex verhalten



<< >> 4 Einträge, 1 Seite
Gast Gast
 2006-05-18 15:17
#66269 #66269
Hallo Zusammen,
ich habe einen komischen effekt bei einer regex:


Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# cat test.pl 
#!/usr/local/bin/perl -w

open IN,$ARGV[0];
while (<IN>){
       @F=split;
       $F[1]=~s/\s+//g;
       print $F[1] if $F[1]!~/^[\w-]+$/;
}
Spec4153@Sys05# cat test
0xc1d3314   COLT_Leinfelden-Echterdingen      0x10290     Pingable        
0xc131af7   iteb_Quackenbrueck-Backup         0x21000c    Rtr_Cisco      

./test.pl test
COLT_Leinfelden-Echterdingen #


Wie kann das sein? Der String entspricht doch dem regex. Auffällig ist das der String ein Leerzeichen (am Ende) enthält, trotz der substitution.

Wer kann mir das erklären?

Grüße,
Aleks

edit pq: code-tags hinzugefügt\n\n

<!--EDIT|pq|1147956357-->
docsnyder
 2006-05-18 15:50
#66270 #66270
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
@Aleks

Eigentlich machst Du alles richtig, nur hast Du eine falsche IF-Bedingung.

Du schreibst:
Code: (dl )
print $F[1] if $F[1]!~/^[\w-]+$/;

Meinen tust Du aber offensichtlich:
Code: (dl )
print $F[1] if $F[1]=~/^[\w-]+$/;

bzw.
Code: (dl )
print $F[1] unless $F[1]!~/^[\w-]+$/;


Gruß, Doc

P.S. Das Leerzeichen am Ende bekomme ich übrigens nicht.
Dubu
 2006-05-18 16:53
#66271 #66271
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
@docsnyder: Wahrscheinlich möchte Aleks sich eben die ausgeben lassen, die "komisch" aussehen.

@Aleks: Bei den gezeigten Testdaten lässt sich das Problem nicht erkennen. Jage die Testdatei doch mal durch "od -ha" und schau nach, ob da nicht irgendwo ein nicht-druckbares Zeichen drin ist, das man mit cat nicht erkennt.
Leerzeichen können übrigens auch ohne das Substitute keine mehr sein, da schon vom split() alle Leerzeichen und Tabs entfernt werden.
docsnyder
 2006-05-18 17:01
#66272 #66272
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
@Dubu

Magst Recht haben, geht aber aus Aleks' Posting nicht klar hervor. ... er wird schon wissen, was er meint.

Gruß, Doc
<< >> 4 Einträge, 1 Seite



View all threads created 2006-05-18 15:17.