Allora metti {1,3} da uno a 3 caratteri. Tanto non possono essere di meno giusto?
Devi sapere che ogni quantificatore ( +, *, ? ) è greedy ( ingordo ) nel senso che cattura quanti più caratteri possibili:
Codice PHP:
$str = 'esempio: "ciao" e "blabla"';
// voglio cattuare da questa stringa solo: ciao
preg_match('/"(.+)"/', $str, $m);
echo $m[1]; // ciao" e "blabla non è risultato che ti aspetti!
preg_match('/"(.+?)"/', $str, $m);
echo "\n", $m[1]; // ciao, il risultato che ti aspetti!
Hai 3 modi per definire un quantificatore ungreedy:
- Metti un punto interrogativo dopo di esso. Esempio: .+?
- Inserisci U nei modificatori della regexp ( così rendi tutto ungreedy )
- Tramite le asserzioni (?U:(.+))
Spero sia chiaro!