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
