logo

Java Regex

Le Java Regex ou Regular Expression est une API pour définir un modèle pour rechercher ou manipuler des chaînes .

Il est largement utilisé pour définir la contrainte sur des chaînes telles que le mot de passe et la validation de l'e-mail. Après avoir appris le didacticiel Java regex, vous pourrez tester vos expressions régulières à l'aide de l'outil Java Regex Tester.

L'API Java Regex fournit 1 interface et 3 classes dans java.util.regex emballer.

paquet java.util.regex

Les classes Matcher et Pattern offrent la fonctionnalité d'expression régulière Java. Le package java.util.regex fournit les classes et interfaces suivantes pour les expressions régulières.

  1. Interface MatchResult
  2. Classe de correspondance
  3. Classe de modèle
  4. Classe PatternSyntaxException
API Java Regex

Classe de correspondance

Il met en œuvre le Résultat de correspondance interface. C'est un moteur d'expression régulière qui est utilisé pour effectuer des opérations de correspondance sur une séquence de caractères.

Non.MéthodeDescription
1correspondances booléennes()tester si l'expression régulière correspond au modèle.
2recherche booléenne()trouve l'expression suivante qui correspond au modèle.
3recherche booléenne (int start)trouve l'expression suivante qui correspond au modèle à partir du numéro de départ donné.
4Groupe de chaînes()renvoie la sous-séquence correspondante.
5int début()renvoie l'index de départ de la sous-séquence correspondante.
6avoir l'intention()renvoie l'index de fin de la sous-séquence correspondante.
7int groupCount()renvoie le nombre total de la sous-séquence correspondante.

Classe de modèle

C'est le version compilée d'une expression régulière . Il est utilisé pour définir un modèle pour le moteur d'expression régulière.

Non.MéthodeDescription
1Compilation de modèles statiques (regex de chaîne)compile l'expression régulière donnée et renvoie l'instance du modèle.
2Matcher matcher (entrée CharSequence)crée un matcher qui fait correspondre l'entrée donnée avec le modèle.
3correspondances booléennes statiques (expression régulière de chaîne, entrée CharSequence)Cela fonctionne comme une combinaison de méthodes de compilation et de matcher. Il compile l'expression régulière et fait correspondre l'entrée donnée avec le modèle.
4String[] split (entrée CharSequence)divise la chaîne d'entrée donnée autour des correspondances d'un modèle donné.
5Modèle de chaîne()renvoie le modèle regex.

Exemple d'expressions régulières Java

Il existe trois façons d’écrire l’exemple d’expression régulière en Java.

 import java.util.regex.*; public class RegexExample1{ public static void main(String args[]){ //1st way Pattern p = Pattern.compile('.s');//. represents single character Matcher m = p.matcher('as'); boolean b = m.matches(); //2nd way boolean b2=Pattern.compile('.s').matcher('as').matches(); //3rd way boolean b3 = Pattern.matches('.s', 'as'); System.out.println(b+' '+b2+' '+b3); }} 
Testez-le maintenant

Sortir

 true true true 

Expression régulière . Exemple

Le . (point) représente un seul caractère.

 import java.util.regex.*; class RegexExample2{ public static void main(String args[]){ System.out.println(Pattern.matches('.s', 'as'));//true (2nd char is s) System.out.println(Pattern.matches('.s', 'mk'));//false (2nd char is not s) System.out.println(Pattern.matches('.s', 'mst'));//false (has more than 2 char) System.out.println(Pattern.matches('.s', 'amms'));//false (has more than 2 char) System.out.println(Pattern.matches('..s', 'mas'));//true (3rd char is s) }} 
Testez-le maintenant

Classes de caractères Regex

Non.Classe de personnageDescription
1[abc]a, b ou c (classe simple)
2[^abc]N'importe quel caractère sauf a, b ou c (négation)
3[a-zA-Z]a à z ou A à Z, inclus (plage)
4[a-d[m-p]]a à d, ou m à p : [a-dm-p] (union)
5[a-z&&[déf]]d, e ou f (intersection)
6[a-z&&[^bc]]a à z, sauf b et c : [ad-z] (soustraction)
7[a-z&&[^m-p]]a à z, et non m à p : [a-lq-z](soustraction)

Classes de caractères d'expression régulière Exemple

 import java.util.regex.*; class RegexExample3{ public static void main(String args[]){ System.out.println(Pattern.matches('[amn]', 'abcd'));//false (not a or m or n) System.out.println(Pattern.matches('[amn]', 'a'));//true (among a or m or n) System.out.println(Pattern.matches('[amn]', 'ammmna'));//false (m and a comes more than once) }} 
Testez-le maintenant

Quantificateurs Regex

Les quantificateurs précisent le nombre d'occurrences d'un caractère.

Expression régulièreDescription
X?X se produit une fois ou pas du tout
X+X apparaît une ou plusieurs fois
X*X apparaît zéro ou plusieurs fois
X{n}X apparaît n fois seulement
X{n,}X apparaît n fois ou plus
X{y,z}X apparaît au moins y fois mais moins de z fois

Classes de caractères d'expression régulière et exemple de quantificateurs

 import java.util.regex.*; class RegexExample4{ public static void main(String args[]){ System.out.println('? quantifier ....'); System.out.println(Pattern.matches('[amn]?', 'a'));//true (a or m or n comes one time) System.out.println(Pattern.matches('[amn]?', 'aaa'));//false (a comes more than one time) System.out.println(Pattern.matches('[amn]?', 'aammmnn'));//false (a m and n comes more than one time) System.out.println(Pattern.matches('[amn]?', 'aazzta'));//false (a comes more than one time) System.out.println(Pattern.matches('[amn]?', 'am'));//false (a or m or n must come one time) System.out.println('+ quantifier ....'); System.out.println(Pattern.matches('[amn]+', 'a'));//true (a or m or n once or more times) System.out.println(Pattern.matches('[amn]+', 'aaa'));//true (a comes more than one time) System.out.println(Pattern.matches('[amn]+', 'aammmnn'));//true (a or m or n comes more than once) System.out.println(Pattern.matches('[amn]+', 'aazzta'));//false (z and t are not matching pattern) System.out.println('* quantifier ....'); System.out.println(Pattern.matches('[amn]*', 'ammmna'));//true (a or m or n may come zero or more times) }} 
Testez-le maintenant

Métacaractères Regex

Les métacaractères des expressions régulières fonctionnent comme des codes courts.

Expression régulièreDescription
.N'importe quel caractère (peut ou non correspondre au terminateur)
dTous les chiffres, en deçà de [0-9]
DN'importe quel autre chiffre, abréviation de [^0-9]
sTout caractère d'espacement, abréviation de [ x0Bf ]
STout caractère autre qu'un espace, abréviation de [^s]
DansN'importe quel caractère de mot, abréviation de [a-zA-Z_0-9]
DANSTout caractère autre qu'un mot, abréviation de [^w]
Une limite de mots
BUne limite sans mot

Exemple de métacaractères d'expression régulière

 import java.util.regex.*; class RegexExample5{ public static void main(String args[]){ System.out.println('metacharacters d....');\d means digit System.out.println(Pattern.matches('\d', 'abc'));//false (non-digit) System.out.println(Pattern.matches('\d', '1'));//true (digit and comes once) System.out.println(Pattern.matches('\d', '4443'));//false (digit but comes more than once) System.out.println(Pattern.matches('\d', '323abc'));//false (digit and char) System.out.println('metacharacters D....');\D means non-digit System.out.println(Pattern.matches('\D', 'abc'));//false (non-digit but comes more than once) System.out.println(Pattern.matches('\D', '1'));//false (digit) System.out.println(Pattern.matches('\D', '4443'));//false (digit) System.out.println(Pattern.matches('\D', '323abc'));//false (digit and char) System.out.println(Pattern.matches('\D', 'm'));//true (non-digit and comes once) System.out.println('metacharacters D with quantifier....'); System.out.println(Pattern.matches('\D*', 'mak'));//true (non-digit and may come 0 or more times) }} 
Testez-le maintenant

Question d'expression régulière 1

 /*Create a regular expression that accepts alphanumeric characters only. Its length must be six characters long only.*/ import java.util.regex.*; class RegexExample6{ public static void main(String args[]){ System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'arun32'));//true System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'kkvarun32'));//false (more than 6 char) System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'JA2Uk2'));//true System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'arun$2'));//false ($ is not matched) }} 

Testez-le maintenant

Question d'expression régulière 2

 /*Create a regular expression that accepts 10 digit numeric characters starting with 7, 8 or 9 only.*/ import java.util.regex.*; class RegexExample7{ public static void main(String args[]){ System.out.println('by character classes and quantifiers ...'); System.out.println(Pattern.matches('[789]{1}[0-9]{9}', '9953038949'));//true System.out.println(Pattern.matches('[789][0-9]{9}', '9953038949'));//true System.out.println(Pattern.matches('[789][0-9]{9}', '99530389490'));//false (11 characters) System.out.println(Pattern.matches('[789][0-9]{9}', '6953038949'));//false (starts from 6) System.out.println(Pattern.matches('[789][0-9]{9}', '8853038949'));//true System.out.println('by metacharacters ...'); System.out.println(Pattern.matches('[789]{1}\d{9}', '8853038949'));//true System.out.println(Pattern.matches('[789]{1}\d{9}', '3853038949'));//false (starts from 3) }} 
Testez-le maintenant

Exemple de recherche d'expressions régulières Java

 import java.util.regex.Pattern; import java.util.Scanner; import java.util.regex.Matcher; public class RegexExample8{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while (true) { System.out.println('Enter regex pattern:'); Pattern pattern = Pattern.compile(sc.nextLine()); System.out.println('Enter text:'); Matcher matcher = pattern.matcher(sc.nextLine()); boolean found = false; while (matcher.find()) { System.out.println('I found the text '+matcher.group()+' starting at index '+ matcher.start()+' and ending at index '+matcher.end()); found = true; } if(!found){ System.out.println('No match found.'); } } } } 

Sortir:

 Enter regex pattern: java Enter text: this is java, do you know java I found the text java starting at index 8 and ending at index 12 I found the text java starting at index 26 and ending at index 30