Thread Kommaseparierte Listen bereichsweise ausgeben. (28 answers)
Opened by Gast at 2006-04-14 16:54

murphy
 2006-04-16 00:15
#64978 #64978
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
[quote=murphy,15.04.2006, 20:56][...] Mein regulärer Ausdruck funktioniert auch mit dem Variablennamen "Hallo Welt wie geht es" noch einwandfrei. [...][/quote]
Hier noch ein Beispiel, damit man mir das auch glaubt ;-)

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/perl

use strict;
use warnings;

# seltsamer Variablenname
my $var = "Hallo Welt, wie geht es dir?";

# irregulaere Eingabedaten
$_ = "a =5 , $var = 42, b=3\n";

print m/(?:^|,)\s*\Q$var\E\s*=\s*(\d+)/, "\n";


Ok, ich habe den Ausdruck noch weiter verfeinert, damit auch Steuerzeichen in der Variablen ignoriert werden -- für sid burns Beispielvariable wäre das nicht nötig gewesen, aber für meine noch dümmere ist es nötig -- und der Schönheit halber nur die zweite Klammer als Zeichengruppe zurückgeliefert wird.

Mit dieser Variante kann man jetzt wirklich so ziemlich jeden Unfug als Variablennamen verwenden und muss dem Benutzer keine Beschränkung auf ein Zeichen auferlegen. Das einzige was ich unterbinden würde, ist die Verwendung eines Gleichheitszeichens im Variablennamen, denn dann könnte man keine eindeutige Interpretation der Eingabedaten mehr gewährleisten.
When C++ is your hammer, every problem looks like your thumb.

View full thread Kommaseparierte Listen bereichsweise ausgeben.