View Single Post
Old 23-01-2007, 22:37   #5
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da MEMon
ho ancora qualche problemino, mettiamo che abbia una stringa così composta:

_blabla bl 123456 blaa_ciao mondo!_bla bla pappapero_

come faccio ad eliminare la parte di testo compresa fra i caratteri '_' senza che sappia com'è composta?

ho provato un str.replace(/_.+_/i,"") ma mi cancella tutta la stringa!
Ci siamo quasi ... ma c'è una piccola questione che non hai considerato (o probabilmente non conosci). L'espressione X+ è un quantificatore definito "greedy" (=avido, ingordo) perché cerca di catturare il massimo numero di caratteri possibili. Quindi, con la stringa di input sopra, cattura tutto ciò che c'è tra il primo _ e l'ultimo _ (quello dopo pappapero) e non solo fino al _ dopo blaa (come si vorrebbe).
La soluzione è usare un quantificatore non greedy.

str.replace(/_.+?_/gi,"")

Il '?' rende il quantificatore non greedy, adesso cerca di catturare il minor numero di caratteri. Il flag 'g' serve per continuare nel replace, così non si ferma al primo match.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso