Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    88

    regular expression e date [JAVA]

    Salve a tutti,
    ho scritto questa espressione regolare:
    (0[1-9]|1[012])+[- /.]+(0[1-9]|[12][0-9]|3[01])+[-/.]+(((19|20)\\d\\d)|([0-9]{2}))+

    che data una stringa che può essere una data nel formato gg/mm/aa verifica se questa è veramente tale.
    il problema è che l'espressione funziona fin quando la data è una stringa senza altri caratteri concatenati.
    Eempio:
    String data = "21/02/09"; l'espressione funziona
    String data1 = "fahhd21/02/09jdfs"; l'espressione fallisce

    ho provato sia il metodo matches() che lookingAt()

    qualcuno mi può suggerire cosa manca alla mia espressione?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: regular expression e date [JAVA]

    Originariamente inviato da draghe
    il problema è che l'espressione funziona fin quando la data è una stringa senza altri caratteri concatenati.
    Eempio:
    String data = "21/02/09"; l'espressione funziona
    String data1 = "fahhd21/02/09jdfs"; l'espressione fallisce

    ho provato sia il metodo matches() che lookingAt()

    qualcuno mi può suggerire cosa manca alla mia espressione?
    Se vuoi accettare caratteri ai lati del tuo pattern o modifichi il pattern in modo che all'inizio/fine esprima "zero o più caratteri non digit" in modo che con matches() possa matchare tutto l'intero input, oppure ti limiti a cercare una occorrenza del pattern usando find() di Matcher.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    88
    ok. allora uso find.

    nel caso di
    String data1 = "fahhd21/02/09jdfs";

    come faccio a farmi restituire solo l'occorrenza trovata, ovvero la data?
    esiste un qualche metodo di Matcher?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da draghe
    ok. allora uso find.

    nel caso di
    String data1 = "fahhd21/02/09jdfs";

    come faccio a farmi restituire solo l'occorrenza trovata, ovvero la data?
    esiste un qualche metodo di Matcher?
    Generalmente/tipicamente find() si usa come condizione di un loop (while) per cercare tutte le occorrenze del pattern.
    Se ti serve solo la prima occorrenza, basta un if. Se find() l'ha trovata (ritorna true), la parte catturata è nel gruppo 0 e la prendi con group() (o più esplicitamente con group(0) )
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    88
    grazie, sei stato molto esauriente

  6. #6
    Originariamente inviato da andbin
    Generalmente/tipicamente find() si usa come condizione di un loop (while) per cercare tutte le occorrenze del pattern.
    Se ti serve solo la prima occorrenza, basta un if. Se find() l'ha trovata (ritorna true), la parte catturata è nel gruppo 0 e la prendi con group() (o più esplicitamente con group(0) )
    Complimenti AndBin sei davvero molto esperto. Stavo leggendo un paio di tuoi interventi giusto prima. Che background hai? Mi piacerebbe conoscere la tua storia.

    Ciao.
    Think global, act local.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.