[bcn-pm] Hola

Xavi Drudis Ferran xdrudis at tinet.org
Sun Jul 25 13:48:52 CDT 2004


El Tue, Jul 20, 2004 at 11:35:02AM +0200, Xavier Noria deia:
> On Jul 20, 2004, at 11:00, Ktala wrote:
> 
> >Estic intentant tractar els mètodes del C++ de Micro$oft que tenen com 
> >a  format "STDMETHODIMP nom mètode(parametres) {algo}" amb la regex 
> >"STDMETHODIMP.*\\n*\\{(.*\\n*)*\\}" però aquesta malparida només 
> >m'agafa el primer de cada .cpp perque engloba els altres dins del 
> >primer. He pensat de posar que el cos del mètode no contingui la 
> >paraula "STDMETHODIMP", però no me'n surto.
> 
> El primer problema que estas trobant es que el quantificador * se'n va 
> tan a la dreta com pot. Per exemple, donat
> 
>     STDMETHODIMP { foo }
>     STDMETHODIMP { bar }
> 
> l'engine fa matching amb el primer "STDMETHODIMP", llavors fa matching 
> amb el primer "{". Be, el que voliem. Ara, pero, el grup (.*\\n*)* fa 
> que avanci fins al final de la cadena, es faci backtrack un cop, i es 
> matchambri l'ultim "}", el de la dreta de "bar". Total que $& es _tot 
> el codi_, ho veus que va aixi?
> 

Si l'únic problema fos aquest, es podria usar (.*?\\n*?)*? o alguna 
cosa així, perquè *? és com * però es queda tan cap a l'esquerra com 
pot. (o alguna cosa estil [^}]*)

Però com diu el Xavi hi ha altres problemes. Mala peça al teler, per regexps.

-- 
- jo també vull una Europa lliure de patents de programari  -
--------------------------------------------------------------
 EuropeSwPatentFree - http://EuropeSwPatentFree.hispalinux.es
--------------------------------------------------------------
http://patents.caliu.info

Xavi Drudis Ferran
xdrudis at tinet.org



More information about the Barcelona-pm mailing list