[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Mastering regular expressions: la lecture qu'elle en est bien



Le Sat, Jun 03, 2023 at 02:08:55PM +0200, Dethegeek a écrit :
> Par exemple, dans un texte contenant des chaînes délimitées soit par des
> doubles quotes ou des simples quotes (le HTML apr exemple) alors tu peux

si il y a bien *un* truc à ne jamais parser avec des regexps autrement
que pour du one shot, c'est tous ces formats dont la structure est très
complexe (xml,html,yaml, … 

> capturer le début d'une chaîne avec ("|') puis trouver la fin de cette chaîne
> avec \1.

GNI? non …

* on capture avec des parenthèses qui expliquent ou commencent
  et finissent la capture
* la capture numero N (\N) est celle de la Nième (

sed -r '
	s/(.*-(.*)) (.*)/ 1: \1\n 2: \2\n 3: \3\n/
' <<%
Saint-Exupery Antoine

te donneras

 1: Saint-Exupery
 2: Exupery
 3: Antoine

les | servent à écrire des Atomes alteratifs

sed -rn 's/Saint-(Exupery|Hilaire) (.*)/\2 est saint /p' <<%
Saint-Exupery Antoine
Saint-Thomas d'Aquin

Donne:

Antoine est saint

> Tu as aussi des outils sympas pour tester tes regexes,
> https://regex101.com/

ou vim avec

	:set is hls

et les verymagic (\v)

ou tout simplement des exos de sed. j'avoue ne pas piger pourquoi
tous ces millions de lignes de code et du réseau gachés juste pour
s'amuser avec des outils qui ne pèsent rien sur ta machine.

> Et une excellente documentation sur les regexes, celle qui m'a permis de tout
> en apprendre il y a bien longtemps. Pour moi c'est une référence dans le
> domaine.

De *très très très* loin, ce que j'ai pu lire de mieux sur les regexps est

	https://www.oreilly.com/library/view/mastering-regular-expressions/0596528124/

Non seulement c'est techniquement très précis (les types de moteurs,
avantages comparés de NFA et DFA, tout ça …) mais en plus c'est *très
bien écrit* et ca donne envie d'essayer les trucs. A lire entre amis
avec les laptops à porté de main, ça remplace aisément les soirées
jeu de plateaux ou netflix.

cordialement,
marc


Reply to: