Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 14 su 14
  1. #11
    Quote Originariamente inviata da Ansharja Visualizza il messaggio
    Se vai a ricercare il pattern che ti interessa, che siano lettere maiuscole, lettere maiuscole e minuscole, caratteri alfanumerici (quel "\w"), o altro, qualsiasi altro carattere ci sia in mezzo non cambia il risultato. Nel tuo caso "l" e "altro" verrebbero considerate due parole distinte, ma in nessun caso l'apostrofo o un qualsiasi altro delimitatore verrebbero inclusi nel match.

    Se è questo quello che vuoi ottenere il codice che ho postato sopra funziona in tutti questi casi, se tu volessi in qualche caso includere altro nel matching, ad esempio se volessi che "agro-alimentare" fosse considerata un'unica parola (scusa non mi vengono esempi migliori adesso ), bisogna cambiare qualcosa.
    in questi giorni ho avuto tempo per testare il mio programma in vari modi ed in effetti quello che mi hai detto tu funziona molto bene ma se volessi che la stringa ciao_ciao venga divisa e quindi avere ciao ripetuta 2 volte come dovrei fare? Ho provato a inserire Pattern.compile("[A-Za-z0-9]") ma il risultato è che divide per singola lettera
    E nel caso volessi appunto includere anche agro-alimentare come unica parola che dovrei cambiare?

  2. #12
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da james101 Visualizza il messaggio
    ma se volessi che la stringa ciao_ciao venga divisa e quindi avere ciao ripetuta 2 volte come dovrei fare?
    E nel caso volessi appunto includere anche agro-alimentare come unica parola che dovrei cambiare?
    Con la ricerca delle parole con il loop del find() (invece che lo split), la regex semplicemente deve rappresentare la sequenza di caratteri che FANNO parte delle tue parole.

    Quindi: o cerchi i caratteri che fanno parte delle parole, oppure "neghi" i caratteri che fanno parte dei separatori. A te la scelta, dipende da quanti sono.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #13
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Quote Originariamente inviata da james101 Visualizza il messaggio
    in questi giorni ho avuto tempo per testare il mio programma in vari modi ed in effetti quello che mi hai detto tu funziona molto bene ma se volessi che la stringa ciao_ciao venga divisa e quindi avere ciao ripetuta 2 volte come dovrei fare? Ho provato a inserire Pattern.compile("[A-Za-z0-9]") ma il risultato è che divide per singola lettera
    E nel caso volessi appunto includere anche agro-alimentare come unica parola che dovrei cambiare?
    Il codice che ho inserito lo fa già praticamente, cambia solo che tu vuoi togliere l'underscore dai caratteri che fanno il match. Quindi al posto di "\\w+", metti "[A-Za-z0-9]+".

    Attento che il "+" è fondamentale, sta dicendo di cercare una o più occorrenze consecutive di lettere maiuscole o minuscole o numeri. Se non metti il più a quel punto sì, dividi per ogni lettera.


    Se vuoi più informazioni sulle classi di caratteri e i simboli particolari puoi guardare la documentazione della classe Pattern, ovviamente per le espressioni regolari ("regex") trovi poi tutti i tutorial che vuoi.

    Se vuoi includere anche parole divise dal trattino è un problema, puoi ovviamente aggiungere il trattino alla classe di cattura ma il matcher non può ovviamente decidere quali siano parole sensate e quali no, senza avere una sorta di "vocabolario" da consultare.

    L'unica cosa che puoi stabilire è ad esempio che possa esserci solo un trattino all'interno di una parola e che sia diviso da lettere, o cose del genere.

  4. #14
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Con la ricerca delle parole con il loop del find() (invece che lo split), la regex semplicemente deve rappresentare la sequenza di caratteri che FANNO parte delle tue parole.

    Quindi: o cerchi i caratteri che fanno parte delle parole, oppure "neghi" i caratteri che fanno parte dei separatori. A te la scelta, dipende da quanti sono.
    Quote Originariamente inviata da Ansharja Visualizza il messaggio
    Il codice che ho inserito lo fa già praticamente, cambia solo che tu vuoi togliere l'underscore dai caratteri che fanno il match. Quindi al posto di "\\w+", metti "[A-Za-z0-9]+".

    Attento che il "+" è fondamentale, sta dicendo di cercare una o più occorrenze consecutive di lettere maiuscole o minuscole o numeri. Se non metti il più a quel punto sì, dividi per ogni lettera.


    Se vuoi più informazioni sulle classi di caratteri e i simboli particolari puoi guardare la documentazione della classe Pattern, ovviamente per le espressioni regolari ("regex") trovi poi tutti i tutorial che vuoi.

    Se vuoi includere anche parole divise dal trattino è un problema, puoi ovviamente aggiungere il trattino alla classe di cattura ma il matcher non può ovviamente decidere quali siano parole sensate e quali no, senza avere una sorta di "vocabolario" da consultare.

    L'unica cosa che puoi stabilire è ad esempio che possa esserci solo un trattino all'interno di una parola e che sia diviso da lettere, o cose del genere.
    grazie mille ancora una volta e spero sia l'ultima volta, dovrei aver risolto così. Grazie anche per aver linkato la documentazione gli darò un'occhiata al più presto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.