Emulare il LIKE SQL con una regex in java

di il
4 risposte

Emulare il LIKE SQL con una regex in java

Salve, volevo un suggerimento su come emulare il like sql in java attraverso una regex.
Ad esempio:
Supponiamo che voglio matchare la stringa "Pippo" io vorrei che il match risulti vero se confronto con Pippo, "p", "pip", "i", "o", "pp", "PIPPO", ecc..
Risulti falso invece se confronto, "r", "PIPPOS", "pips", "d", ecc...
Proprio come un like sql facendo l'uppercase ogni volta del campo del database e del campo con cui confrontarlo.
Potreste darmi una mano?
Grazie.

4 Risposte

  • Re: Emulare il LIKE SQL con una regex in java

    erik992 ha scritto:


    vorrei che il match risulti vero se confronto con Pippo, "p", "pip", "i", "o", "pp", "PIPPO", ecc..
    Ma questo NON è un like .... cosa c'entra es. "pp" ??
  • Re: Emulare il LIKE SQL con una regex in java

    Se si fa in sql "LIKE '%pp%'" il confronto è positivo.
    Grazie
  • Re: Emulare il LIKE SQL con una regex in java

    erik992 ha scritto:


    Se si fa in sql "LIKE '%pp%'" il confronto è positivo.
    Non era chiaro il senso ... potevi dirlo prima.
    String str = "Pippo";     // o "pippo" o "PIPPO" o "PiPpO" ecc...
    
    boolean match = str.matches("(?i).*pp.*");
    Il (?i) è per attivare il flag case-insensitive. Se devi eseguirlo 1 volta sola va bene il matches che ho scritto. Se devi ripeterlo molte volte conviene creare il java.util.regex.Pattern e ri-usarlo.

    P.S. per come l'ho scritto non è molto efficiente se la stringa fosse molto lunga, perché .* è "greedy".
  • Re: Emulare il LIKE SQL con una regex in java

    Si forse non ero stato chiarissimo. Grazie mille
Devi accedere o registrarti per scrivere nel forum
4 risposte