Thread regex: Bestimmte Bereiche ignorieren (5 answers)
Opened by Jeff at 2010-08-21 17:53

Gast Jeff
 2010-08-23 17:41
#140866 #140866
2010-08-22T16:58:48 MatthiasW
Guest Jeff
Ich habe nun das Modul ein bisschen ausprobiert und eine Frage:
Warum funktionieren die Funktionen nicht, wenn vor dem zu ignorierendem Teil etwas davor ist?

Das klappt nicht, weil du explizit angibst, dass die Zeichenkette ('...') am Anfang des Textes stehen muss.

So sollte es klappen: (Ich habe die Doku nur kurz überflogen, es geht daher womöglich eleganter)
Code (perl): (dl )
1
2
3
my $text = "123 '456' 789";
my( undef, $post, $pre ) = extract_delimited( $text, qr/'/, qr/[^']*/ );
$text = ($pre || '') . $post;

Ansonsten könntest du dir meinen Alternativvorschlag mit regulären Ausdrücken ansehen. (Werde es gleich noch aktualisieren, da mir ähnliche Fehler passiert sind, wie dir ;-)

In deinem Skript scheinst du dir doppelte Arbeit zu machen - die Datei wird 2x analysiert - und außerdem übersieht es einige Fehler: } { kommt durch, weil die Anzahl an öffnenden gleich der Anzahl an schließenden geschweiften Klammern ist.

Darüber hinaus sieht es recht umständlich und aufgebläht aus. Die aktuelle Zeilennummer der zuletzt benutzten Datei findest du bspw. in $.. (perlvar)

MfG

Danke für die Tipps und dein Listing. Vor allem interessant ist, wie du es mit einem Stack realisiert hast anstatt mein unnötiges Array mit den Schleifen.

Meine Frage wäre dann beantwortet. Das mit den ignorieren von Kommentaren und Strings funktioniert jetzt und meinen Code konnte ich um die Hälfte kürzen.
Last edited: 2010-08-23 17:48:02 +0200 (CEST)

View full thread regex: Bestimmte Bereiche ignorieren