linux-l: mal wieder perl...geht das besser?
Daniel Winkelmann
winkelma at chemie.fu-berlin.de
Do Mär 29 12:56:59 CEST 2001
Moin moin,
On Thu, 29 Mar 2001, Ulrich Wiederhold wrote:
> Hallo, folgende Zeile, die zerlegt werden soll:
> >> :mynick!ident at p3E9BEB0D.dip.t-dialin.net MODE #channel +v nick
>
> Ich mache das mittels:
> $line =~ /:([^!]*)!([^@]*@[^ ]*) ([^ ]*[\s])([^ ]*[\s])(..)\s(.*)/;
> my $command = $3;
> chop $command;
> my $channel = $4;
> chop $channel;
>
Wie waere es mit :
$line =~ /:([^!]*)!([^@]*@[^ ]*) ([^ ]*)\s([^ ]*)\s(..)\s(.*)/ ;
my ( $command , $channel ) = ( $3 , $4 ) ;
oder mit :
$line =~ /:([^!]*)!([^@]*@\S*)\s(\S*)\s(\S*)\s(..)\s(.*)/ ;
my ( $command , $channel ) = ( $3 , $4 ) ;
alternativ alles in einer Zeile :
my ( undef , undef , $command , $channel ) =
( $line =~ /:([^!]*)!([^@]*@\S*)\s(\S*)\s(\S*)\s(..)\s(.*)/ ) ;
> Allerdings muß ich wegen \s immer noch einen whitespace-character
> abtrennen. Geht das auch ohne? Also was anderes für ([^ ]*[\s]) ?
Siehe oben, es geht einfacher.
Zur Konstruktion & zum Testen von Regexps empfehle ich ein kleines Tcl/Tk
Skript, das sich hier :
http://laurent.riesterer.free.fr/regexp/
downloaden laesst.
Ciao,
Daniel
Mehr Informationen über die Mailingliste linux-l