dummabua Geschrieben 7. Oktober 2004 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
taschentoast Geschrieben 7. Oktober 2004 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
dummabua Geschrieben 7. Oktober 2004 Autor 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
DevilDawn Geschrieben 7. Oktober 2004 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"; }
taschentoast Geschrieben 7. Oktober 2004 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
dummabua Geschrieben 7. Oktober 2004 Autor 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...
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden