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