4. Notes
Présentation des regex PCRE (et non POSIX)
Nous parlerons de regex pour éviter le débat expressions régulières
vs expressions rationnelles
Présentation et environnement de benchmarks disponibles sur
https://github.com/blackheaven/regex_programming_porn
10. Multiplicité
0 ou 1 /at?/- /at{0,1}/- /at{,1}/
A cat eats a black fat rat
0 à inf. /at*/- /at{0,}/
A cat eats a black fat rat
1 à inf. /at+/- /at{1,}/
A cat eats a black fat rat
n à m /at{n,m}/
A cat eats a black fat rat
n /at{n}/
A cat eats a black fat rat
11. Classes de caractères
Intervals /[a-z]/
Hier, j'ai terminé à 6h00.
Classes prédefinies /[w]/vs /[[:alnum]]/
Hier, j'ai terminé à 6h00.
Jocker /.W/
Hier, j'ai_terminé_à_6h00.
Non-équivalences à cause des accents dans certains langages
Accents /[=e=]/
Hier, j'ai terminé à 6h00.
12. Capture / Alternatives multi-
caractères
/(ca|ts)/
A cat eats a black fat rat
/(.)(?:la|at)/
A cat eats a black fat rat
En PCRE /(bla|blac)/
A cat eats a black fat rat
En POSIX /(bla|blac)/
A cat eats a black fat rat
14. Ancres
Début /^./
A cat eats a black fat rat
Fin /.$/
A cat eats a black fat rat
Délimiteur de mots /.atb/
A cat eats a black fat rat
Qui est différent de l'espace /.ats/
A cat_eats a black fat_rat$
15. Options
/PATTERN/OPTIONS
Insensibilité à la casse /a/i
A cat eats a black fat rat
Prise en compte des retours à la ligne des ancres /at$/m
A catn
eats a black fat rat$
Prise en compte des retours pour le point /at./svoire /at./s
A catn
eats a black fat_rat
17. Comportements glouton
Chercher la plus longue correspondance /a.*t/
A cat eats a black fat rat
Chercher la plus courte correspondance /a.*?t/
A cat eats a black fat rat
30. Conclusion
Utile pour extraire/valide des informations basiques (addressses
email, dates, unités lexicalles)
Nombreuses variations en fonction du langage ou de la bibliothèque
Un "vrai" analyseur lexical/syntaxique devient rapidement vital