Documentation des expressions régulières SSOwat

Bonjour à tous.

Après un peu plus d’un an à m’être essayé aux regex dans ssowat avec Lutim, je viens seulement de comprendre que ces “regex” sont des patterns Lua qui suivent leurs propres règles. En de nombreux point bien différentes des regex qu’on connaît habituellement.

Le comprendre avant m’aurait éviter bien des heures d’agacement devant une regex qui me paraissait pourtant juste.

Donc, pour aider nos amis packageurs (et moi même :yum:), je pensais qu’il serait utile de rédiger une petite doc sur ce qu’il est possible de faire avec des patterns Lua.

J’ai déjà rassemblé les informations qui me semblait utile. Directement tirée de la doc Lua.
http://www.lua.org/pil/20.2.html
http://www.lua.org/manual/5.3/manual.html#6.4.1

classes de caractères:
%a N’importe quelle lettre.
%c N’importe quel caractère de contrôle.
%d N’importe quel chiffre.
%l N’importe quelle lettre minuscule.
%p N’importe quel caractère de ponctuation.
%s N’importe quel caractère d’espace.
%u N’importe quelle lettre majuscule.
%w N’importe quel caractère alphanumérique.
%x N’importe quel chiffre hexadécimal.
%z N’importe quel caractère avec une représentation “\0”.

Une version MAJUSCULE d’une de ces classes, représente le contraire de la classe. Par exemple : “%A” représente tous les caractères non-lettre.

Les caractères magiques sont :

() Pour former un groupe ou une sous-expression qui sera souvent appelé.
. (le point) Représente n’importe quel caractère.
% Sert d’échappement pour les caractères magiques.

  •     Une ou plusieurs répétitions du pattern.
    
  •     Zéro ou plusieurs répétitions du pattern pour les petites séquences.
    
  •     Zéro ou plusieurs répétitions du pattern pour les grandes séquences.
    

? Zéro ou plusieurs répétions du pattern. Rends facultatif le pattern suivant.
[ Démarre une séquence : [a-z].
^ Recherche de chaîne de caractères commençant par…
$ Recherche de chaîne de caractères se terminant par…

Pour échapper un autre caractère, notamment les guillemets et apostrophes, on utilisera \

Inverser une séquence:
Démarrer une séquence par ^ permet d’obtenir une négation du pattern.
[^0-9] cherchera tout caractère qui n’est pas un chiffre.

Les séquences supportent 4 caractères magiques.
+, *, - et ?

Il serait intéressant de partager sur des détails que j’aurais omis.
Et également mettre en forme cette prose pour faire une jolie doc à mettre sur le site.

1 Like