PDA

Visualizza la versione completa : Espressione regolare per eliminare da una frase le parole inferiori o uguali a due caratteri


Marvellous
23-10-2014, 10:32
Salve a tutti,

data una stringa di caratteri alfanumerici, es:

a-casa-di-lucia-c-e-un-gatto-la-testa-bianca-e-la-coda-nera

devo ottenere una nuova stringa senza i termini di lunghezza inferiore o uguale a due caratteri, quindi:
casa-lucia-gatto-testa-bianca-coda-nera

Se è più semplice potrei mettere gli SPAZI al posto dei trattini (-)

Attendo vostro aiuto.

Grazie mille

Scara95
23-10-2014, 11:07
(\w\w+)

\w <=> [A-Za-z0-9_]

Se vuoi togliere l'underscore basta che sostituisci \w con [A-Za-z0-9]

Alternativamente \w{3,}

Scara95
23-10-2014, 11:15
Ma in ogni caso non ti basta fare uno split, filtrare la lista per x -> (lunghezza x) > 2 e fare un join?

Marvellous
23-10-2014, 11:27
Ciao Scara95, l'espressione che mi hai proposto non restituisce il riusltato corretto

Marvellous
23-10-2014, 12:21
sembra che la soluzione sia la seguente:

\b\w{1,2}\b

Scara95
23-10-2014, 13:22
A dire il vero dipende da come ti approcci al problema. La mia seleziona tutte le parole più lunghe di 2 caratteri, la tua tutte le parole più corte di 3. Suppongo tu voglia fare un replace per la stringa vuote "". In tal caso è comunque scorretta perché otterresti
-casa--lucia----gatto--testa-bianca---coda-nera

Una possibile soluzione è la seguente:
(\b\w{1,2}\-)|(\-\w{1,2}$)
ovviamente globale.
Che gestisce anche il caso dell'ultima parola di 2 caratteri.

Loading