[Php-it] [OT regex] Un'altro caso di regex inadempiente...

Domenico L. domenico.lorusso at pleiade.it
Tue Nov 28 16:55:26 CET 2006


Cristiano Verondini ha scritto:
>
>>>    Multiline: il ^ e il $ fanno match per ogni riga (delimitata da
>>>    CR) Dot match all: il . fa match anche con l'andata a capo
>>>
>> questo lo so ed è in questo modo che voglio usarle... cosa sbaglio?
>
>    Ho perso i messaggi precedenti, per cui non ricordo la RE, ma mi 
> sembra che tu volessi fare match su più righe.
>
>        Cris
>
$testo='ciao|
miao§
Maus
ciaps
';
preg_match_all('/([^|]+)\|?/m',$testo,$ar); print_r($ar); => otteniamo 
il risultato voluto

preg_match_all('/([^|]+)\|?$/m',$testo,$ar); print_r($ar);=> ci tronca 
tutta la prima riga fino al carattere \n


Allora nella prima mi aspetto che cerchi qualcosa di diverso da | un o 
zero | e (siccome è avido) un qualcosa di diverso da |
ottengo questo:

# array[2]	0=>::----Begin_
	# string[5]	0=>ciao|
	# string[23]	1=>
miao§
Maus
ciaps 


--------------::0::--------enD|
# array[2]	1=>::----Begin_
	# string[4]	0=>ciao
	# string[23]	1=>
miao§
Maus
ciaps 


--------------::1::--------enD|


Nella seconda mi aspetterei di riapplicare il controllo dicendo che 
cerco di trovare una o zero pipe e un ritorno a capo.... ottengo questo:

# array[1]	0=>::----Begin_
	# string[23]	0=>
miao§
Maus
ciaps 


--------------::0::--------enD|
# array[1]	1=>::----Begin_
	# string[23]	0=>
miao§
Maus
ciaps 


--------------::1::--------enD|


Ora se mi spiegate dove si verifica il problema sarei felice :-)

-- 
Domenico L.                             icq: 645 44 861

per stupire mezz'ora basta un libro di storia,
io cercai di imparare la Treccani a memoria... [F.d.A.]



More information about the Php-it mailing list