[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