les expressions régulières en java

15
Eric TOGUEM, CIO AByster ( www.abyster.com ) LES EXPRESSIONS RÉGULIÈRES EN JAVA 1

Upload: eric-toguem

Post on 27-May-2015

3.325 views

Category:

Technology


1 download

DESCRIPTION

Les expressions régulières ou le pattrn matching sont de puissants outils pour le parsing. Le but de cette présentation est de montrer comment y arriver en Java

TRANSCRIPT

Page 1: Les expressions régulières en java

1

Eric TOGUEM, CIO AByster (www.abyster.com)

LES EXPRESSIONS RÉGULIÈRES EN JAVA

Page 2: Les expressions régulières en java

2QU’EST CE QU’UNE

EXPRESSION RÉGULIÈRE ?

Chaine de caractères qui décrit un ensemble de chaines de caractères.

Exemple: l’expression régulière [0-9][a-z] décrit l’ensemble des chaines de caractères composées d’un chiffre et d’une lettre

Page 3: Les expressions régulières en java

3A QUOI SERVENT LES

EXPRESSIONS RÉGULIÈRES ?

De nombreuses utilités en informatique, elles servent principalement pour réaliser :

des filtres : ne conserver que certaines lignes d’un fichier texte, de la forme nom=valeur par exemple

des contrôles : vérifier qu’une donnée entrée par un utilisateur a bien le format d’une adresse IP par exemple.

des substitutions : remplacer un motif par une chaine de caractères précise.

des découpages : récupérer une partie d’une chaine de caractères par exemple découper une ligne par rapport aux « ; » dans le cas d’un fichier .csv.

Page 4: Les expressions régulières en java

4

COMPOSANTES D’UNE EXPRESSION

RÉGULIÈRES: LES CARACTÈRES

X Le caractère X

\\ Le caractère \

\t Le caractère tabulation

\n Le caractère nouvelle ligne

\r Le caractère retour chariot

\f Le caractère saut de page

Exemple : AB\tCD représente la chaine de caractère AB suivi d’une tabulation suivi de CD

Page 5: Les expressions régulières en java

5

COMPOSANTES D’UNE EXPRESSION RÉGULIÈRES: LES

CLASSES DE CARACTÈRES

[abc] Les caractères a, b ou c

[^abc] Les caractères qui ne sont pas a, b ou c

[a-z] Un caractère de a à z

[a-zA-Z] Un caractère de a à z minuscule ou majuscule

[0-9] Un caractère numérique

Exemple : [0-9][a-z] représente une chaine de caractères constituée d’un chiffre puis d’une lettre.

Page 6: Les expressions régulières en java

6

COMPOSANTES D’UNE EXPRESSION RÉGULIÈRES: LES

CLASSES DE CARACTÈRES PRÉDÉFINIES

. Un caractère quelconque

\d Un caractère numérique : [0-9]

\D Un caractère non numérique : [^0-9]

\s Un caractère blanc: [ \t\n\x0B\f\r]

\S Un caractère non blanc : [^\s]

Page 7: Les expressions régulières en java

7

COMPOSANTES D’UNE EXPRESSION RÉGULIÈRES: CLASSES DE CARACTÈRES

POSIX

\p{Lower} Une misnuscule : [a-z]

\p{Upper} Une majuscule :[A-Z]

\p{Alpha} Un caractère alphabétique : [\p{Lower}\p{Upper}]

\p{Digit} Un chiffre : [0-9]

\p{Alnum} Un caractère alphanumérique : [\p{Alpha}\p{Digit}]

\p{Punct} Ponctionation : !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

\p{Blank} Espace ou tabulation : [ \t]

\p{XDigit} Un caractère hexadécimal: [0-9a-fA-F]

\p{Space} Un caractère blanc[ \t\n\x0B\f\r]

Page 8: Les expressions régulières en java

8

COMPOSANTES D’UNE EXPRESSION

RÉGULIÈRES: LES CARACTÈRES DE

RÉPÉTITION

X? X une fois ou zéro fois

X* X zéro ou plusieurs fois

X+ X une fois au moins (XX*)

X{n} X n fois

X{n,} X, au moins n fois

X{n,m} X entre n et m fois

Page 9: Les expressions régulières en java

9

COMPOSANTES D’UNE EXPRESSION RÉGULIÈRES:

OPÉRATEURS LOGIQUES

XY X suivi de Y

X|Y X ou Y

Page 10: Les expressions régulières en java

10 EXEMPLES

Expression régulière correspondant à une adresse IP

Expression régulière correspondant à une adresse email,

Expression régulière correspondant à un numéro de téléphone,

Expression régulière correspondant à une URL,

Expression régulière correspondant à un nombre réel,

Page 11: Les expressions régulières en java

11UTILISATION AVEC JAVA:

REMARQUE

Le caractère \ a un sens pour java, il faut donc le doubler dans l’écriture des expressions régulières pour qu’il ne soit pas interprété par java. Par exemple, on écrira \\. à la place de \

Page 12: Les expressions régulières en java

12UTILISATION AVEC JAVA:

LES MÉTHODES

La classe String

public boolean matches(String regex)

public String replaceAll(String regex, String replacement)

public String[] split(String regex)

Page 13: Les expressions régulières en java

13EXPRESSIONS

REGULIÈRES EN JAVA

Trois classes interviennent :

Pattern : permet d'obtenir une version compilée d'une expression régulière.

Matcher : permet d'analyser une chaîne en entrée à partir d'un Pattern.

PatternSyntaxException : exception levée lorsque la syntaxe d'une expression régulière n'est pas correcte.

try{

Pattern p = Pattern .compile("a*b|c");

String entree = "aabbbcab";

Matcher m = p.matcher(entree);

while (m.find())

System.out.println(entree.substring(m.start(), m.end()));

}catch(PatternSyntaxException pse){ }

Page 14: Les expressions régulières en java

14

EXPRESSIONS REGULIÈRES EN JAVA: MÉTHODES

DE PATTERN 

static Pattern compile( String expreg)

Matcher matcher (CharSequence entree)

String[] split ( charSequence entree)

Page 15: Les expressions régulières en java

15

EXPRESSIONS REGULIÈRES EN JAVA: QUELQUES MÉTHODES

DE MATCHER 

int start()

int end()

String group()

int groupCount()

boolean find()

boolean matches()