Wurzelzwerg: Zeichenketten

Hallo allerseits,

ich benötige nochmal Eure Hilfe. Kann mir bitte jemand zeichen, wie man mit Perl am effektivsten aus einer Zeichenkette alle Zeichen entfernt, die keine Buchstend und keine Ziffern sind? Das müßte ja mit regulären Ausdrücken ganz gut gehen, ich weiß nur nicht, wie :(

viele Dank schonmal

  1. gudn tach!

    Kann mir bitte jemand zeichen, wie man mit Perl am effektivsten aus einer Zeichenkette alle Zeichen entfernt, die keine Buchstend und keine Ziffern sind? Das müßte ja mit regulären Ausdrücken ganz gut gehen, ich weiß nur nicht, wie :(

    perldoc perlre
    da steht so einiges.
    und fuer das, was du machen moechtest, ist auch die deutschsprachige hilfe von selfhtml (http://de.selfhtml.org/perl/sprache/regexpr.htm) ausreichend.

    s/[^a-zA-Z0-9]+//g

    prost
    seth

  2. Hallo Wurzelzwerg,

    Kann mir bitte jemand zeichen, wie man mit Perl am effektivsten aus einer Zeichenkette alle Zeichen entfernt, die keine Buchstend und keine Ziffern sind? Das müßte ja mit regulären Ausdrücken ganz gut gehen, ich weiß nur nicht, wie :(

    Ich würde Folgendes vorschlagen:

      
    $zeichenkette =~ s/[[:alnum:]]+//g;  
    
    

    Das ersetzt alle Buchstaben (nicht nur "a" bis "z" und "A" bis "Z") und die Ziffern 0 bis 9 durch "nichts".

    MffG
    EisFuX

    1. Hallo EisFuX, (yep, ich korrigiere mich mal selbst ;-)

      Kann mir bitte jemand zeichen, wie man mit Perl am effektivsten aus einer Zeichenkette alle Zeichen entfernt, die keine Buchstend und keine Ziffern sind? Das müßte ja mit regulären Ausdrücken ganz gut gehen, ich weiß nur nicht, wie :(

      Ich würde Folgendes vorschlagen:

      $zeichenkette =~ s/[[:alnum:]]+//g;

        
      
      > Das ersetzt [alle](http://perldoc.perl.org/perlre.html#%5b3%5d) Buchstaben (nicht nur "a" bis "z" und "A" bis "Z") und die Ziffern 0 bis 9 durch "nichts".  
        
      Soweit, so gut, wir wollten aber alle anderen Zeichen entfernen (also durch "nichts" ersetzen), daher:  
        
      ~~~perl
        
      $zeichenkette =~ s/[^[:alnum:]]+//g;  
      
      

      MffG
      EisFuX

    2. gudn tach!

      Ich würde Folgendes vorschlagen:
      $zeichenkette =~ s/[[:alnum:]]+//g;

      Das ersetzt alle Buchstaben

      erstens muesste das noch negiert werden, um die aufgabenstellung zu erfuellen (ok, das waere nicht schwierig). aber zweitens ist der posix-kram locale-abhaengig, wie in c, d.h. welche buchstaben nun von [:alnum:] erkannt werden, ist nur dann gewiss, wenn locale bekannt ist.

      prost
      seth

  3. hi,

    ich benötige nochmal Eure Hilfe. Kann mir bitte jemand zeichen, wie man mit Perl am effektivsten aus einer Zeichenkette alle Zeichen entfernt, die keine Buchstend und keine Ziffern sind? Das müßte ja mit regulären Ausdrücken ganz gut gehen, ich weiß nur nicht, wie :(

    \w  => Buchstaben, Ziffern und _
    \W  => annersrum

    http://perl-seiten.privat.t-online.de/ jo, den Grote gibts noch!

    --roro

    1. gudn tach!

      \w  => Buchstaben, Ziffern und _
      \W  => annersrum

      der gesamte ausdruck koennte dann lauten
        s/[\W_]//g

      aber auch \w bzw. \W ist locale-abhaengig, bedarf also mehr vorsicht als die explizite (oder range-basierende) angabe der zeichenklassen.

      prost
      seth