hwj
Doppel-As
... oder auch die Denksportaufgabe für's Wochenende
Guten Morgen !
Ich versuche mich gerade an einem Suchen/Ersetzen Ausdruck in perl und frage mich gerade, ob das mit regex überhaupt noch geht ... also, ich würde gerne einen String mit "Attribut=Wert" ersetzen, aber jedes Attribut darf nur max. 1x vorkommen, aber die Reihenfolge soll egal sein. Klingt einfach, aber geht das ?
Beispiel:
ok: Red=123 green=34 blue=45
ok: green=56 Red=123
ok: blue=5
nicht ok (2x red): red=4 blue=5 red=5
sicher könnte man schreiben:
und so alle Kombinationen abklappern, aber nicht gerade elegant. Und wenn dann noch eine weitere Farbe (bzw. Attribut) hinzukommt ...
Eine andere Möglichkeit wäre natürlich, die Regex im Programm als String selbst zu erzeugen und dann evtl. eval zu arbeiten, oder ?
Geht das einfacher ?
Gruss
Heiko
Guten Morgen !
Ich versuche mich gerade an einem Suchen/Ersetzen Ausdruck in perl und frage mich gerade, ob das mit regex überhaupt noch geht ... also, ich würde gerne einen String mit "Attribut=Wert" ersetzen, aber jedes Attribut darf nur max. 1x vorkommen, aber die Reihenfolge soll egal sein. Klingt einfach, aber geht das ?
Beispiel:
ok: Red=123 green=34 blue=45
ok: green=56 Red=123
ok: blue=5
nicht ok (2x red): red=4 blue=5 red=5
sicher könnte man schreiben:
Code:
sub mymatch {
my $str = shift;
if ($str =~ /(red=\d+)? (green=\d+)? (blue=\d+)?/) {
...
} elsif ($str =~ /(red=\d+)? (blue=\d+)? (green=\d+)?/) {
...
} elsif ($str =~ /(green=\d+)? (blue=\d+)? (red=\d+)?/) {
...
und so alle Kombinationen abklappern, aber nicht gerade elegant. Und wenn dann noch eine weitere Farbe (bzw. Attribut) hinzukommt ...
Eine andere Möglichkeit wäre natürlich, die Regex im Programm als String selbst zu erzeugen und dann evtl. eval zu arbeiten, oder ?
Geht das einfacher ?
Gruss
Heiko