Espressioni regolari in Java

22 settembre 2008

Le espressioni regolari rappresentano uno strumento molto potente per lavorare sulle stringhe. Possono essere utilizzate, sia per convalidare i dati, sia per effettuare ricerche all’interno di un testo. La sintassi di questo pseudo-linguaggio è molto flessibile e consente di creare espressioni in base alle proprie esigenze.

Dalla versione 1.4 di Java (in linea con quanto fatto già da PHP, javascript, Ruby e altri), è stato introdotto il package java.util.regex composto dalle classi Pattern e Matcher che permettono di validare una stringa, o ricercare un testo al suo interno, a partire da un’espressione regolare.

Per definire un’espressione regolare è necessario conoscere alcune regole base:

  • [...]
    Insieme di caratteri validi;
  • [^...]
    Insieme negato di caratteri validi;
  • -
    Intervallo;
  • &&
    Intersezione;
  • .
    Qualunque carattere;
  • +
    Concatenazione;
  • RE*
    Cardinalità multipla (0 o più occorrenze dell’espressione RE);
  • RE{n}
    Cardinalità multipla (esattamente n occorrenze dell’espressione RE);
  • RE{n,}
    Cardinalità multipla (almeno n occorrenze dell’espressione RE);
  • RE{n,m}
    Cardinalità multipla (almeno n occorrenze dell’espressione RE, ma non più di m).

Facciamo alcuni esempi semplici per chiarire meglio le regole:

  • [abc]
    Espressione che contiene un solo carattere tra a, b, o c;
  • [^abc]
    Espressione che contiene un solo carattere, tutti sono validi, ad esclusione di a, b, o c;
  • [a-z]
    Espressione che contiene un solo carattere tra quelli del range a-z;
  • [a-d[m-p]]
    Espressione che contiene un solo carattere tra quelli del range a-d e del range m-p (unione);
  • [a-z&&[def]]
    Espressione che contiene un solo carattere tra quelli comuni del range a-z e dell’insieme (d, e, f) (intersezione);
  • [a-z&&[^bc]]
    Espressione che contiene un solo carattere tra quelli comuni del range a-z e dell’insieme negato (b, f) (intersezione);
  • [a-z&&[^m-p]]
    Espressione che contiene un solo carattere tra quelli comuni del range a-z e del range negato (m-p) (intersezione).
Se vuoi aggiornamenti su Espressioni regolari in Java inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su Espressioni regolari in Java

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy