Dernière modification : 23/08/2022

Regex Java - Mémo

Une expression régulière est une chaîne de caractères String décrivant un motif dans une séquence de caractères. Grâce à cet outil, il est possible de valider une séquence de caractères, vérifier la validité d'une chaîne (mail, mot de passe), rechercher dans une chaîne de caractères et réaliser un remplacement par exemple.

Dans cet article nous allons aborder rapidement les Regex dans le language Java.

 

1. Extraction de données

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Regex {
    public static void main(final String[] args) {
        // final String chaine = "ABC1DEF2DEFDMM";
        // final String chaine = "ABC1ABC2DEF";
        final String chaine = "ABC1ABC2DEFABCMM";

        // final Pattern p = Pattern.compile("(ABC)((((?!DEF).)*)||(((?!MM).)*))((DEF)|(MM))");
        // final Pattern p = Pattern.compile("(ABC)(((?!DEF).)*)((DEF))");
        final Pattern p = Pattern.compile("(ABC)(((?!ABC).)*)((DEF)|(MM))");

        final Matcher m = p.matcher(chaine);
        while (m.find()) {
            System.out.println(m.group());
        }
    }
}

 

2. Vérification du pattern

import java.util.regex.Pattern;

public class Regex {
    public static void main(final String[] args) {
        final String chaine1 = "Test regex Java pour Wikibooks francophone.";
        System.out.println(Pattern.matches("[a-z]* Wikibooks", chaine1)); // false
        System.out.println(Pattern.matches("[a-zA-Z ]* francophone\\.", chaine1)); // true
    }
}

 

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Regex {
    public static void main(final String args[]) {
        Pattern pattern = Pattern.compile("Hugo");
        Matcher matcher = pattern.matcher("Hugo Etiévant");
        while (matcher.find()) {
            System.out.println("Trouvé !");
        }
    }
}

3. Méthodes de remplacement

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Regex {
    public static void main(final String args[]) {
        Pattern pattern = Pattern.compile("chats");
        Matcher matcher = pattern.matcher("Les chats sont des annimaux domestisques, les chats sont nos amis");
        String newStr = matcher.replaceFirst("chiens");
        System.out.println(newStr); // Les chiens sont des annimaux domestisques, les chats sont nos amis
    }
}

 

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Regex {
    public static void main(final String args[]) {
        final Pattern pattern = Pattern.compile("chats");
        final Matcher matcher = pattern.matcher("Les chats sont des annimaux domestisques, les chats sont nos amis");
        final String newStr = matcher.replaceAll("chiens");
        System.out.println(newStr); // Les chiens sont des annimaux domestisques, les chiens sont nos amis
    }
}

Pour plus d'informations (en vue de ne pas réinventer la roue) :

Regex déjà existantes pour des situations courantes :