Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

PERL: Regular Expression

Empfohlene Antworten

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 :)

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

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

Da logischerweise im Gruppennamen keine ";" enthalten sein dürfen sollte das klappen:


while(<DATABASE>)

{

 my $matching = $1 if ( $_ =~ /^group=([^;]*)\;/i );

 print "$matching\n";

}

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

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...

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Konto

Navigation

Suchen

Suchen

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.