Initialement publié le 21 juillet 2006 à 19 h 45
Ce billet ne prétend pas à l’exhaustivité et est écrit par un illettré de regexps
(qui aimerait bien s’y mettre sérieusement, quand même). Inspiration :
- Plugin « blocage par référent » et expressions régulières
- Pas assez régulièrement d’expressions régulières.
Opérateur | Sens |
---|---|
. |
Reconnait n’importe quel caractère ( ) |
^ |
Reconnait le début d’une ligne |
$ |
Reconnait la fin d’une ligne |
* |
Reconnait 0 fois ou plus le dernier caractère |
+ |
Reconnait 1 fois ou plus le dernier caractère |
? |
Reconnait 0 ou 1 fois (mais pas plus) le dernier caractère |
{n} |
Reconnait n fois exactement le dernier caractère |
{n,} |
Reconnait au moins n fois le dernier caractère |
{n,m} |
Reconnait au mois n fois mais pas plus de m fois |
\ |
Ne considère pas le caractère suivant comme spécial |
| |
Alternative |
() |
Modèles ou groupement |
[] |
Classe de caractères |
Les descriptions ne sont pas forcément rigoureuses, mais essaient d’être plus parlantes. \
ne signifie pas Ne considère pas le caractère suivant comme spécial
(parlant) mais ne pas interpréter le caractère suivant
(rigoureux).
Afin d’alléger le tableau, dans les exemples suivants, ou
doit se comprendre comme et/ou
1. Pour les geeks : OR
, pas XOR
. De même, une suite de ou
sera remplacée par des virgules puis un ou à la fin.
Opérateur | Sens | Exemple |
---|---|---|
abcd |
abcd |
C’est l’abcd de la vie |
[abcd] |
a, b, cou d |
Diantre ! |
^abcd |
abcden début de ligne |
abcd forme le début de l’alphabet |
abcd$ |
abcden fin de ligne |
l’alphabet commence par abcd |
[^abcd] |
Aucun des caractères a, b, cou d |
Empyrée |
a|b |
aou b |
Bonbon et Caramel |
(ab|cd) |
abou cd |
Abaque |
ab[cde] |
abc, abdou abe |
Abe Simpson |
(ht|f)tp |
httpou ftp |
<a href="http://blog.empyree.org"> |
[0-9] |
Tous chiffres entre 0et 9 |
29 ans et trois mois |
[a-z] |
Toutes lettres entre aet z |
Heu… |
[a-zA-Z] |
Toutes lettres entre aet zet entre Aet Z |
Heu… |
[a-z0-9]+ |
Suite de caractères alphanumériques (casse indifférente ?) | julian37… |
[^a-z] |
Aucune minuscule | Heu… |
[a-z]+ |
Suite de lettres entre aet z |
Une phrase sans ponctuation ou chiffre |
ab.*cd |
abpuis 0+ caractères puis cd |
abcd, abdsd9,lcd |
(plop)+ |
Un ou plusieurs plop |
plop, plopplop, plap |
Si vous avez des exemples plus utiles (recettes personnelles) que ces cas d’écoles, je serais ravi de les signaler.
En voici un :
<!DOCTYPE.*<h2>
- Toute chaîne commençant par
<!DOCTYPE
, suivi d’un nombre quelconque de caractères et se terminant par<h2>
- Dans un billet DotClear, supprimer tout ce qui vient avant le billet lui-même.
Remarques
Alphabet
Pour [a-z]
, s’agit-il uniquement de l’alphabet anglais (26 caractères) ou bien de l’alphabet de la langue courante (définit par exemple par un xml:lang
) ? Un é
ou un š
seront-t-il pris en compte dans des textes respectivement en français et en slovène ? Le seront-ils dans des textes respectivement en slovène et en français (où ces caractères n’existent respectivement pas) ?
Casse et « alphanumérisme »
[a-z0-9]+
est-il insensible à la casse ? Comment puis-je introduire une sensibilité ? Pas que ça m’intéresse, juste pour savoir.
Différence entre ab[cde]
et (ht|f)tp
Dans le premier cas, le choix s’opère sur une seule lettre, alors que dans le second, certains choix acceptés sont des groupes de lettres. Le second peut donc faire toute ce que fait le premier (mais c’est plus long à écrire), mais le contraire n’est pas vrai.
Numération
Je ne suis pas certain pour [0-9]
. C’est peut-être [09]
(sans le trait d’union). Quid des autres systèmes de numération (binaire, hhexadécimal) ? J’imagine que les notations non positionnelles (numération romaine : II,IV, XIV…) ne sont pas gérées, mais ça ne me gêne pas.
- Il parait que la conjonction et est inclusive en français, mais je ne trouve pas de source
La citation à-peu-près-dans-le-sujet du jour : Some people, when confronted with a problem, think
I know, I’ll use regular expressions.
Now they have two problems.
Aucun commentaire:
Enregistrer un commentaire