[Php-it] Rimuovere eccessivi a capo [scoperto mistero ma non
capito]
Andrea Colanicchia
andrea.colanicchia at gmail.com
Thu Jan 4 14:35:30 CET 2007
On 1/4/07, Domenico L. <domenico.lorusso at pleiade.it> wrote:
> io prima usavo /(\r\n|\r|\n)+/sUD e non mi andava....
> il problema è il greedy, ma non capisco... cioè il comportamento non
> greedy della replace è che di fatto mi ignoara il +
>
> qualcuno mi sa dare dei lumi?
Per quanto ne so io, il greedy significa che il sistema è "ingordo" e
cerca la corrispondenza + ampia possibile, quindi tutte le ripetizioni
di (\r\n|\r|\n).
Quello ungreedy invece si acontenta della prima corrispondenza che
trova, quindi prende solo la prima sequenza di (\r\n|\r|\n) che
soddisfa l'espressione regolare.
In questo caso ti annula il '+', ma non è sempre così, diciamo che si
accontenta della prima sequenza di caratteri che soddisfa la RE, e in
questa sequanza potrebbero anche esserci delle ripetizioni, quindi non
è detto che tutti i + di una RE siano annullati.
Per esempio, ma non ho verificato, se io ho /a+e+/ e la stringa
"aaee", il greedy dovrebbe prenderla tutta, mentre l'ungreedy solo
"aae" perché è la prima sequenza che soddisfa la condizione, ma come
vedi contiene una ripetizione, quindi non sempre i + vengono saltati.
Però verifica l'esempio che ti ho fatto perché non ho avuto tempo di testarlo.
Andrea.
More information about the Php-it
mailing list