dummabua Geschrieben 7. Oktober 2004 Teilen Geschrieben 7. Oktober 2004 Hi, ich hab hier eine Datei mit 20000 Zeilen. Am Anfang einer Zeile stehen Sachen wie: forwarding oder group hier mal ein Auszug aus dem File group=administrator-role; descr=Administration; icon=ag_admin.gif;... ich hab nun mit folgendem Code alle Zeilen rausgesucht, die mit "group=" beginnen. #!/usr/bin/perl -w $basename = "sdb.db"; $i = 0; open (DATABASE, $basename) || die("Kann $basename nicht oeffnen!\n"); while(<DATABASE>) { $content = <DATABASE>; $i++; if ($content =~ /^group=/) { $matching = REGEX; print "$matching\n"; } } close (DATABASE); Diese Zeilen will ich jetzt mit einem weiteren Regex innerhalb des IF Blocks zerlegen, weil ich die Info brauche, wie die group heisst. D.h. für den Auszug oben wäre das gewünschte Ergebniss "administrator-role". Wie muss der Regex dafür heissen. Bin auf dem Thema leider nicht so bewandert hab schon mit split () rumgebastelt, bin aber nicht wirklich weit gekommen. Danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
taschentoast Geschrieben 7. Oktober 2004 Teilen Geschrieben 7. Oktober 2004 Hi, #... while(<DATABASE>) { my $matching = $1 if ( $_ =~ /^group=(.*)\;/i ); print "$matching\n"; } #... sollte tun. $1 ist ne Back-Reference auf das eingeklammerte in der Regexp. Sehr praktisch sowas . taschentoast Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dummabua Geschrieben 7. Oktober 2004 Autor Teilen Geschrieben 7. Oktober 2004 danke, hab ich auch schon gehabt... leider sind im dem String mherere ";" habs etz auch geschafft, aber mit einer meiner meinung nach popel-lösung m/^group=(.+); desc/; Hab momentan n Problem mit UTF-8 von Perl. Hast da vielleicht auch eine Idee :bimei Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DevilDawn Geschrieben 7. Oktober 2004 Teilen Geschrieben 7. Oktober 2004 Da logischerweise im Gruppennamen keine ";" enthalten sein dürfen sollte das klappen: while(<DATABASE>) { my $matching = $1 if ( $_ =~ /^group=([^;]*)\;/i ); print "$matching\n"; } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
taschentoast Geschrieben 7. Oktober 2004 Teilen Geschrieben 7. Oktober 2004 Hab momentan n Problem mit UTF-8 von Perl. Hast da vielleicht auch eine Idee :bimei Welches Problem? Perl kann ab 5.6.X recht gut mit Unicode umgehen. use utf8; # in Kombination mit einem UTF8 Editor dein bester Freund ansonsten: my $string = "a \x{2264} b"; # a kleinergleich b taschentoast Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dummabua Geschrieben 7. Oktober 2004 Autor Teilen Geschrieben 7. Oktober 2004 Sorry, es lag bzw. liegt nicht am utf sondern an was anderem... befürchte die datei is schlampig PS: use utf8 <- soll auch helfen naja... trotzdem Danke für die Hilfe... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.