Tout d'abord, il faut savoir que les expressions régulières utilisées sont celles de PHP, plus précisément de la fonction eregi (expressions régulières sans contrôle de la casse). Le format de ces expressions régulières est le format POSIX.
Une expression régulière est composée de une à plusieurs branches séparées par l'opérateur ‘|’ .
Une branche est composée de une à plusieurs pièces concaténées.
Une pièce est un atome qui peut éventuellement être suivi des opérateurs suivants : ‘*’, ‘+’ et ‘?’.
L'opérateur ‘*’ signifie que l'atome lié est présent zéro ou plusieurs fois.
L'opérateur ‘+’ signifie que l'atome lié est présent une ou plusieurs fois.
L'opérateur ‘?’ signifie que l'atome lié est présent zéro ou une fois.
Une limitation est composée du caractère ‘{’, suivi d'un chiffre entier, éventuellement suivi d'une virgule, elle-même obligatoirement suivie d'un autre entier supérieur au premier, le tout obligatoirement terminé par le caractère ‘}’. Une limitation suit toujours un atome.
Une limitation de la forme {i} signifie que l'atome lié est présent i fois.
Une limitation de la forme {i,j} signifie que l'atome lié est présent au moins i fois et au plus j fois.
Un atome est :
- une expression régulière incluse dans ‘()’ (qui signifie une vérification de l'expression régulière)
- un ‘()’ vide (qui signifie une chaine nulle)
- une expression entre crochets [] (voir plus bas)
- le caractère ‘.’ (qui signifie n'importe quel caractère unique)
- le caractère ‘^’ (qui signifie le début d'une chaine)
- le caractère ‘$’ (qui signifie la fin d'une chaine)
- le caractère ‘\’ suivi d'un des caractères suivants ‘^.[$()|*+?{’ (qui signifie l'un de ces caractères pris comme simple caractère et non pas un opérateur)
- le caractère ‘{’ suivi d'un caractère autre qu'un chiffre est un caractère ordinaire et non pas le début d'une limitation
Une expression entre crochets est une liste de caractères entre les crochets ‘[’ et ‘]’. Il est possible de spécifier une série de caractères à l'aide du caractère ‘-’. Par exemple [a-z] pour la série de ‘a’ à ‘z’ ou [3-7] pour la série de ‘3’ à ‘7’. Pour inclure le caractère ‘-’ dans la liste de caractères, il faut le placer en première ou dernière position.
Il existe plusieurs autres opérateurs, donc la description complète, précise et en anglais est disponible ici.
Je vais donc lister maintenant quelques exemples d'expressions régulières, avec leurs explications respectives, afin d'essayer de clarifier tout ça.
- abcd : tout référent comprenant la chaine « abcd ».
- ^abcd : tout référent commençant par la chaine « abcd ».
- abcd$ : tout référent finissant par la chaine « abcd ».
- (ab|cd) : tout référent comprenant la chaine « ab » ou « cd » (ou les deux).
- ab[cde] : tout référent comprenant les chaines « abc » ou « abd » ou « abe ».
- ab.*cd : tout référent comprenant une chaine composée de « ab » suivie de 0 à plusieurs caractères suivis de « cd ». Par exemple : « abcd » ou « abdsd9,lcd ».
- [a-z0-9]+ : tout référent comprenant une chaine composée de un à plusieurs caractères alphanumériques.
Twitter
Facebook
Google+
LinkedIn
Commentaires
Je veux nettoyer du texte en supprimant tous les entêtes et ne gardant que le texte lui -même (qui commence dans un <h3>).
David LatapieDans BBEdit, après avoir activé le mode GREP, je tapes donc:
<!DOCTYPE.*<h3>
(Toute chaîne commençant par "<!DOCTYPE", suivi d'un nombre quelconque de caractères et se terminant par "<h3>")
Mais là, rien du tout, BBEdit ne trouve rien (alors qu'il y a, screugneugneu, je suis sur la page).
Ton avis ? (j'ai aussi essayé sur TextMate, sans plus de succès, ce qui invalide le problème de navigateur).
Je viens d'essayer avec SubEthaEdit, et la chaîne est bien détectée et remplacée. Par contre, j'ai été obligé de mettre au moins un caractère de remplacement pour que ça fonctionne (un espace dans mon cas).
Arnaud BoudouTu n'aurais pas un problème identique par hasard ?
Apparemment, c'est BBEdit, car même avec un caractère de remplacement, pas mieux.
David LatapiePremière fois que je sens un vide dans BBEdit. Si ce n'était ma textfactory (un série de rechercher/remplacer), je passerai à SEE
Ah question : que vaut-il mieux choisir comme coloration syntaxique pour du XHTML ? HTML ou XML ?
David Latapieeuh... celle qui te convient le mieux ?
Arnaud Boudou