jeudi 5 juin 2025

Comprendre les RegExp - Exemple d'un feed BlueSky

Les RegExp ont tendance à faire peur à toute personne qui n'est pas familiarisée avec celles-ci. Pourtant, lorsqu'on connaît quelques points précis, on peut déjà aller assez loin.
Ainsi, sans avoir la prétention de couvrir tout l'usage des expressions régulières (loin s'en faut), je pense que celle qui illustre ce billet est une bonne entrée en matière.

Celle-ci est celle qui construit le feed TND(FR) que je décris dans ce billet. Prenons un peu de temps pour la décortiquer.

L'expression est donc la suivante :

(^|\s|\b|#)(ritaline|concerta|tda(h)?|tsa|autisme|
autistique(s)?|bipolaire(s)?|autiste(s)?|tnd
neurodéveloppement(aux)?|synesthésie|méthylphénidate|
hyperactivité|hyperacti(f|ve)(s)?|asperger|trouble de l'attention|
trouble déficit de l'attention)($|\s|\b)

Note : Elle diffère en effet de celle de l'illustration, puisque je me suis rendu compte d'erreurs et l'ai corrigée.

On peut ici la séparer en trois éléments distincts, chacun entre parenthèses (pour prioriser et regrouper, comme en mathématiques). Le premier est (^|\s|\b|#). Il correspond au début de l'expression recherchée, et contient plusieurs éléments intéressants.

  • ^ indique qu'il s'agit d'un début de ligne
  • \s indique un espace ou une tabulation
  • \b indique la position de début ou de fin de mot
  • # n'est ici que le caractère # lui-même, utilisé pour les hashtags sur la plupart des réseaux sociaux (coucou Threads)
  • | est quant à lui un simple OU qui sépare deux éléments

Ce bloc peut donc être lu comme : Un début de ligne OU un espace ou une tabulation OU un début ou une fin de mot OU le caractère #. Et c'est exactement ce que nous recherchons. Nous voulons que l'expression qui sera détectée commence (étant donné que c'est le premier bloc) par un début de ligne OU un espace ou une tabulation OU un début ou une fin de mot OU le caractère #.
Ceci empêche par exemple de chercher le mot vent sans variation, et d'avoir en retour éventuel qui contient bien vent mais n'est pas l'expression souhaitée, puisqu'il ne commence pas par vent.

Le second bloc est le plus long : (ritaline|concerta|tda(h)?|tsa|autisme|autistique(s)?|bipolaire(s)?|autiste(s)?|tnd|neurodéveloppement(aux)?|synesthésie|méthylphénidate|hyperactivité|hyperacti(f|ve)(s)?|asperger|trouble de l'attention|trouble déficit de l'attention)

On définit ici l'ensemble des termes que nous voulons sélectionner avec notre expression régulière, tous séparés par un | qui veut dire OU. Nous voulons donc retenir les termes ritaline OU concerta OU autisme OU tsa, etc.
Une spécificité ici est que certains mots sont regroupés en quelques caractères. Par exemple, pour regrouper à la fois hyperactif, hyperactive, hyperactifs et hyperactives, j'ai utilisé hyperacti(f|ve)(s)?. Attardons-nous là-dessus. Nous avons ici, à nouveau, trois bloc :

  • hyperacti est le début du mot que nous cherchons, juste après les critères du premier bloc vu plus haut
  • (f|ve) indique qu'après le début du mot, nous voulons le masculin (f) OU le féminin (ve)
  • (s)? permet d'inclure le pluriel - ici le s- tout en le rendant facultatif, ce que permet le point d'interrogation

Ainsi, nous devons avoir un mot qui commence par hyperacti, suivi du masculin f ou ve. Ces points sont obligatoires. Nous pouvons aussi avoir le pluriel s à la fin, mais le mot sera retenu même s'il ne contient pas le s, et ce grâce au ?.

Enfin, le dernier bloc est à l'image du premier, et indique ce que nous devons rencontrer à la fin de notre expression recherché : ($|\s|\b)

  • $ indique une fin de ligne
  • \s indique un espace ou une tabulation
  • \b indique un début ou une fin de mot

Là encore, directement après les termes que nous voulons rechercher, nous devons avoir une fin de ligne OU un espace ou une tabulation OU un début ou une fin de mot. Pour reprendre le même exemple que pour le premier bloc, ceci empêche que soit retenu venteux alors que nous ne voulons que le mot vent.

Voilà, j'espère qu'avec ce court billet vous aurez de quoi construire quelques petites expressions régulières, et pourquoi pas construire un feed BlueSky ;) Moi je les construis avec SkyFeed

Pour une liste plus exhaustive des différents opérateurs d'expressions régulières, je ne peux que vous renvoyer à la page wikipedia correspondante.

dimanche 11 mai 2025

Lectures - mai 2025

Premier billet d'une série qui sera forcément irrégulière, dans laquelle je partagerai mes dernières lectures sans les commenter.

Lire la suite

samedi 26 avril 2025

Un retour sur deux

Ça y est, enfin. Ma santé me permet de revenir sur deux roues, il était temps. J’ai une ZR-7 de 2003 et un WRF de 1998 qui m’attendent depuis quelques années, faisant décoration dans le garage. Il est temps de s’y remettre, et pour l’occasion j’ai acheté casque et blouson en attendant de passer au  […]

Lire la suite

vendredi 18 avril 2025

De la paperasse, encore de la paperasse

Il y a quelques temps, professionnellement, j'ai choisi de devenir entrepreneur salarié au sein d'une CAE. Je pense sincèrement que j'ai fait le meilleur choix possible pour moi. Mais il reste une chose à laquelle je n'échappe pas et ce peu importe le statut ou le choix fait pour entreprendre : la  […]

Lire la suite

mercredi 16 avril 2025

Bloguer autrement

Ce blog, ainsi que les précédents, est une source de frustration. Je ne publie pas autant que je voudrais. Mais pourquoi ?

Lire la suite

vendredi 4 avril 2025

Excel et numéro de SIRET

Voilà un titre de billet qui doit vous donner une folle envie de le lire (non). Le sujet est pourtant très sérieux et j'y ai passé un peu de temps... Surtout parce que j'ai horreur de la bureautique.

Lire la suite

mardi 25 février 2025

Notes en vrac #8

Huitième édition des notes en vrac. Beaucoup de retard dans mes lectures, le contenu ne sera pas forcément de toute première fraicheur.

Lire la suite

lundi 24 février 2025

Notes en vrac #7

Septième (et petite) édition des notes en vrac.

Lire la suite

- page 1 de 5