La création d'un objet Pattern nécessite l'appel de l'une des méthodes statiques compile(). La classe Pattern ne possède pas de constructeurs.

Ces méthodes acceptent soit une expression régulière exprimée sous la forme d'une chaîne de caractères, soit cette dernière à laquelle on associe une combinaison d'options.

Pattern modele = Pattern.compile("l.*e");
//ou
Pattern modele = Pattern.compile("l.*e", Pattern.CASE_INSENSITIVE);

Lorsqu'un modèle doit être configuré de telle sorte à satisfaire à plusieurs options, il suffit d'ajouter les options entre elles.

Pattern modele = Pattern.compile("l.*e", 
                                    Pattern.CASE_INSENSITIVE + Pattern.DOTALL);

Les deux méthodes compile() sont susceptibles de lancer des exceptions du type PatternSyntaxException, si l'expression régulière comporte une erreur de syntaxe. Si les options son erronées, une exception IllegalArgumentException sera levée.

//PatternSyntaxException : \w doit s'écrire \\w
Pattern modele = Pattern.compile("l\w*e");

//IllegalArgumentException : 3 ne correspond pas à une option valide
Pattern modele = Pattern.compile("l.*e", 
                              3 + 32); 

La méthode Matcher permet de créer un objet de mise en correspondance pour le modèle courant. C'est à partir de cet objet que la recherche d'occurrences dans un texte spécifié pourra être réalisée.

Matcher recherche = modele.matcher("Texte...");
boolean trouve = recherche.find();

Une vérification préalable de la présence d'une occurrence correspondant au modèle courant, au sein de la chaîne de caractères cible peut être effectuée par l'intermédiaire de la méthode matches().

if(Matcher.matches("\\bq\\w+\\b", "Un texte quelconque...")){
    //...
}
Exemple [voir]
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MiseEnCorrespondance {
    public static void main(String[] args) {
        Pattern modele = Pattern.compile("a.c");
        Matcher recherche = modele.matcher("abcxxxabcxxxabcxxx");
        recherche(recherche);

        recherche.usePattern(
                    Pattern.compile("^a.c.*$", Pattern.MULTILINE));
        recherche(recherche);
    }
    public static void recherche(Matcher recherche) {
        String regexp = recherche.pattern().pattern();
        if(recherche.matches()){
            System.out.println("Une occurrence a été trouvée entre " 
                             + recherche.regionStart() 
                             + " et " 
                             + recherche.regionEnd());
            
            String chaine = recherche.group();
            int debut = recherche.start();
            int fin = recherche.end();

            System.out.println("Modèle     : " + regexp);
            System.out.println("Occurrence : " + chaine);
            System.out.println("Début      : " + debut);
            System.out.println("Fin        : " + fin + "\n");
        }
        else {
            System.out.println("Aucune correspondance n'a pu être " 
                             + "trouvée pour l'expression " 
                             + regexp + "\n");
        }
    }
}