RegEx

15/02/2011 - 20:06 von Martin Asal | Report spam
Hallo RegEx-Profis, :-)

ich habe einen String, der ca wie folgt aussehen kann:

$input = "A E B A A B";

Der Text besteht ausschließlich aus Großbuchstaben und/oder Ziffern, auf
jedes dieser Zeichen folgt ein Leerzeichen. Nun möchte ich wissen,
welche Zeichen im String enthalten sind (die Leerzeichen sind egal).
Beim obigen Beispiel wàre das also:

"AEB"

Es ist also egal, wie oft ein Zeichen enthalten ist, und in welcher
Reihenfolge die Zeichen im Ergebnis enthalten sind, ist auch wurscht.
Ich will nur die enthaltenen Zeichen.

Sicher gibt es dafür eine gaaanz einfache Lösung. Ich habe es jetzt erst
mal wie folgt gemacht, aber bestimmt geht es viel einfacher und
eleganter. Wàre toll, wenn mir dabei jemand helfen könnte!

my $output = "";
for ("0".."9", "A".."Z") {
$output .= $_ if( $input =~ s/$_/$_/ );
}

danke vorab
Martin
 

Lesen sie die antworten

#1 k
15/02/2011 - 20:56 | Warnen spam
Martin Asal writes:

Hallo RegEx-Profis, :-)

ich habe einen String, der ca wie folgt aussehen kann:

$input = "A E B A A B";

Der Text besteht ausschließlich aus Großbuchstaben und/oder Ziffern,
auf jedes dieser Zeichen folgt ein Leerzeichen. Nun möchte ich wissen,
welche Zeichen im String enthalten sind (die Leerzeichen sind egal).
Beim obigen Beispiel wàre das also:

"AEB"

Es ist also egal, wie oft ein Zeichen enthalten ist, und in welcher
Reihenfolge die Zeichen im Ergebnis enthalten sind, ist auch wurscht.
Ich will nur die enthaltenen Zeichen.

Sicher gibt es dafür eine gaaanz einfache Lösung. Ich habe es jetzt
erst mal wie folgt gemacht, aber bestimmt geht es viel einfacher und
eleganter. Wàre toll, wenn mir dabei jemand helfen könnte!

my $output = "";
for ("0".."9", "A".."Z") {
$output .= $_ if( $input =~ s/$_/$_/ );
}



Deine Frage ist am leichtesten mit einem Hash beantwortet:
perl -wle 'my $input = "A E B A A B"; my %h = map { $_ => 1} split / /, $input; print keys %h'
ABE

KP

Ähnliche fragen