Les expressions régulières, ou regex, sont des “patterns” qui permettent de rechercher des mots ayant certaines propriétés. Voici quelques exemples d’expressions régulières:
- ion : recherche les mots qui contiennent la chaine “ion”, dans n’importe quelle position
- ion$ : mots se terminant par “ion” ($=fin de mot)
- ^anti : recherche tous les mots commençant par “anti” (^=début de mot)
- ^maison$ : recherche exactement le mot “maison”
- ^p.*r$ : mots commençant par “p” et finissant par “r” (*= répétitions – 0 ou plusieurs fois – du caractère précédent, ici ‘.’, donc n’importe quel caractère)
- [aeiou][aeiou] : mots contenant (au moins) 2 voyelles successives ([] = classe de caractères: [abc] signifie la même chose que (a|b|c))
- [ptkbdg][ptkbdg] : mot contenant un cluster de consonnes formé de plosives (recherche dans le champ phon)
- oid|ion|ein : recherche les mots qui contiennent (au moins) une des trois chaînes “iod”, “ion” ou “ein” (| = ou). Par exemple, vous pouvez rechercher des mots qui _contiennent_ chien, chat ou lapin avec la regex chien|chat|lapin
- ^(jour|nuit|matin|soir)$ : exactement les quatre mots “jour” ou “nuit” ou “matin” ou “soir” (permet de rechercher une liste de mots)
- p.t : recherche les mots qui contiennent un “p”, suivi d’une lettre quelconque, puis d’un “t” (le point correspond à n’importe quel caractère)
- ^p…r$ : mots commençant par “p”, suivi de trois lettres quelconques, et finissant par “r” (le symbole . dans une regex correspond à n’importe quel caractère)
- ^[aeiou] : mots commençant par une voyelle
- ^[aeiou]+$: mots ne contenant que des voyelles
- ^[^aeriou] : mots ne commençant pas par une voyelle
Il existe beaucoup de tutoriaux sur les regex sur le web, notamment cette page ou cette video. Le cours suivant est également recommandé: http://regextutorials.com/intro.html
La bible sur les regex est le livre Maitriser les expressions régulières
Une regex décrit un automate de transition à états finis. Le site https://regexper.com/ vous permet de visualiser l’automate associé à votre regex. Par exemple:
[ptk].*[aiou][aiou].?ion$ correspond à l’automate fini: