----------  Forwarded Message  ----------

Subject: Re: [Comandob] mirar si N processos estan corrent, en Perl
Date: Friday 30 October 2009
From: Azazelo <azazel...@__badopi.org>
To: Lista general de BaDoPi <[email protected]>

On Friday 30 October 2009 16:45:09 Ferran Fontcuberta wrote:
> El vie, 30-10-2009 a las 11:35 +0100, Daniel López escribió:
> > On Friday 30 October 2009 10:26:03 Ferran Fontcuberta wrote:
> > > perl -e 'print $1 if "foo bar" =~ /((bar)?)/'
> >
> > així sí:
> >
> > perl -e 'print $1 if "foo bar" =~ /(?: (bar)?)/'
>
> Merci! :)
>
> Era l'espai, que tocava els collonets... ¿docu o proves? Si es docu,
> m'hi pots referir, si vos plau?


be, ara que ho provo l'espai sí que canvia coses. Al princi he pensat que $1 
estava printant el primer parentessi que has posat (que potser sobrava??) i 
he pensat el non-capturing, he provat i ha funcionat. Això em recorda la 
frase: - It just works is not enough. 

Em sembla que els trets van pel tema "greedy/non greedy"... i amb el ? no 
captura res perque és opcional i non-greedy, és a dir, que captura el menys 
possible? 

exemple extret del llibre learning perl, pag 103, Randal L Schwartz, 4a edició 
on podem veure què ha fet match en una expressió regular:

d...@danici:~$ cat prova.pl
#!/usr/bin/perl

while (<>) {
 chomp;
 if ( /((bar)?)/ ){
        print "Matched:  |$`<$&>$'|\n";
 } else {
        print "No match\n";
 }
}

d...@danici:~$ perl prova.pl
foo bar
Matched:  |<>foo bar|


No sé, aquí és quan em comença a fer mal el cap... :)

salut

dani

-------------------------------------------------------
--
_______________________________________________
Comandob mailing list
[email protected]
http://lists.badopi.org/mailman/listinfo/comandob

Responder a