Extraire le dernier élément de chaque ligne en regex

Extraire le dernier élément de chaque ligne

Bonjour à tous, aujourd’hui un petit TP sur les expressions régulières. J’ai un collègue qui m’a demandé comment on pouvait Extraire le dernier élément de chaque ligne dans un bout de texte de quelques centaines de lignes. Voici un exemple de format :

IP Address 595,537
IPv6 Address 1,443
MAC Address 0
MD5 163,573

La première version de la regex que j’ai proposée est simple au possible :

([^\s]+)$

Qui signifie en gros : « tout, sauf les espaces avant la fin de chaque ligne ». Cette expression a quand même un problème avec ses performances (326 steps sur regex101) dans la mesure le moteur d’évaluation avance dans le texte, il ne part pas de la fin et va donc avancer dans chaque mot avant de « backtracker », si celui ci n’est pas suivi de la fin de ligne.

Du coup, j’ai pu proposer une première version optimisée :

^.*?\s([^\s]+)$

C’est l’une des rares cas que j’ai croisé où l’usage d’un .* rends l’expression plus performante (120 steps sur le même texte) en l’obligeant à aller à la fin de ligne directement avant de matcher le dernier bloc. D’après regex101, on est donc déjà 3 fois plus … Lire la suite

Key=Value en regex, extraction en PowerShell

Key=Value en Regex

Salut à tous, aujourd’hui je vous propose un focus sur la capture de structures répétées type Key=Value en Regex (ou expression régulières). C’est pas bien compliqué mais il semble qu’il y en ai quelques uns qui ne soit pas au courant du comment faire (et pour ceux qui savent même pas les comment/quoi des regex c’est par ici).

Comme un bon exemple est toujours plus parlant voici le genre de structure qu’on veut extraire :

key1="valueA" key2="valueB" key3="valueC"

Celui qui débute avec les regex aura surement envie d’écrire une regex de ce type:

(key1=\".*\") (key2=\".*\") (key3=\".*\")

Sauf que cette expression de capture des Key=Value en Regex, en plus d’être peu optimisée, n’est pas généralisable. J’entends que si le texte à analyser ne contient pas toujours les mêmes clés et pas forcément le même nombre entre plusieurs lignes. Exemple où cela ne fonctionne plus :

key1="valueA" key2="valueB" key3="valueC"
key1="valueA" key3="valueB" key5="valueC" key0="valueC"
key2="valueB" key52="valueC"

Du coup, là, on va commencer à devoir faire de vraies expressions régulières.

Première optimisation

Déjà, il est souhaitable ne pas utiliser

(.*) # "n'importe quoi plusieurs fois"

mais lui préférer :

([^=]+)= #"Tout jusqu'à un caractère spécifique"

Deuxième optimisation

Plutôt que simplement des groupes de … Lire la suite

Idées de cadeaux de noël Geek pour 2019 !

cadeaux de noël Geek pour 2019

Salut à tous, c’est presque noël, vous avez déjà du acheter vos cadeaux et donc je ne risque pas de vous influencer…^^ C’est donc le bon moment pour moi de vous donner ma petite sélection de cadeaux de noël Geek pour 2019, qui me viennent à l’esprit. Je suis sur que vous (n’)attentiez (pas) tous ça (du tout) ! Et comme d’hab : pas sponso, hein…

Idée cadeau 1 : un livre

How-To de Randall_Munroe, sorti en septembre et qu’on a déjà offert pour mon anniversaire. Dans la droite ligne de WhatIf et ThingsExplainer. C’est inutile, drôle, bien écrit et avec des jolis dessins, comme dans xkcd. Donc parfaitement indispensable !

Idée cadeau 2 : des écouteurs

Les Bose Headphone 700, et oui je sais : ils sont pas donnés… (Pour le coup, je les ai eu moins cher, coup de pot). Mais en contrepartie, ce sont vraiment de supers écouteurs. Je les utilise depuis un peu plus d’un mois et ils m’ont changé la vie dans les transports en commun.

  • Bon rendu sonore.
  • Isolation active efficace.
  • gestion de plusieurs connexions Bluetooth simultanées.
  • Isolation efficace de votre voie dans les conversations téléphoniques, y compris en
Lire la suite

Toute ressemblance avec… Exemples d’avertissements

toute ressemblance avec

Salut à tous, aujourd’hui une brève sur une bêtise. Il n’y a pas si longtemps, j’ai eu besoin pour une présentation au boulot d’ajouter une slide d’avertissement du type : « Toute ressemblance avec des personnages existants ne saurait être que fortuite… etc. »

Faut dire que la-dite présentation était chargée en messages subliminaux (ou pas) au travers de divers memes et citations tirés de la famille adams (on s’approchait d’Halloween) et qu’il fallait que je cadre un peu le truc…^^

Et en cherchant des exemples, je suis tombé sur ce site :

http://michel.balmont.free.fr/pedago/textes/avertissements/collection.php

Qui fait le boulot tout bien comme il faut, et je me suis régalé quelques minutes à en lire quelques unes, parfois un peu capillotracté… avant de faire mienne personnalisée. Que je vous met ci-dessous pour la postérité :

Les faits rapportés dans ces slides ne sont pas réels ni avérés (même s’ils auraient tout aussi bien pu l’être).

En conséquence toute ressemblance avec des personnes ou des situations existantes ne saurait être que fortuite. Si vous vous reconnaissiez à travers ce récit, c’est que vous seriez vous-même fictif : ce qui serait quand même assez étonnant !

Tout cela n’a vocation qu’a servir l’intérêt

Lire la suite