Extraire des nombres d’une chaîne avec regex en Java
Les expressions régulières ou Regex est une API pour définir des patterns qui peuvent être utilisés pour rechercher, manipuler et éditer une chaîne en Java. Regex est largement utilisé pour définir des contraintes. Les expressions régulières sont fournies sous le package java.util.
Dans ce tutoriel nous allons découvrir comment extraire des nombres ou des chiffres d’une chaîne de caractères avec regex en Java.
Exemple 1: Extraire tous les nombres d’une chaîne
import java.util.regex.*; public class Main { public static void main(String[]args) { Pattern pattern = Pattern.compile("\\d+"); Matcher matcher = pattern.matcher("str54776str917str78001str"); while(matcher.find()) { System.out.println(matcher.group()); } } }
Sortie:
54776 917 78001
Exemple 2: Extraire le Nième chiffre d’une chaîne
Si vous souhaitez extraire uniquement certains nombres d’une chaîne, vous pouvez fournir l’index du nombres à extraire à la fonction group().
Par exemple, si on veut extraire uniquement le deuxième chiffres de la chaîne « str54776str917str78001str », soit 917, nous pouvons utiliser le code suivant :
import java.util.regex.*; public class Main { public static void main(String[] args) { Pattern pattern = Pattern.compile("[^\\d]*[\\d]+[^\\d]+([\\d]+)"); Matcher matcher = pattern.matcher("str54776str917str78001str"); if (matcher.find()) { // deuxièmes chiffres correspondants System.out.println(matcher.group(1)); } } }
Sortie:
917
Exemple 3: Extraire un nombre à partir d’une balise
Lorsqu’il s’agit de balises XML ou HTML, il est parfois nécessaire d’extraire une valeur d’un attribut. Par exemple, considérez la balise suivante : <person name="alex" age="25" address="Paris">
Pour extraire l’age, nous pouvons utiliser le code suivant:
import java.util.regex.*; public class Main { public static void main(String[]args) { Pattern p = Pattern.compile("age=\"([0-9]+)\""); Matcher m = p.matcher("<person name=\"alex\" age=\"25\" address=\"Paris\">"); if (m.find()) { System.out.println(m.group(1)); } } }
Sortie:
25