Travailler avec des expressions rationnelles

84
8
fév.
2016
Technologie

Les expressions rationnelles sont un outil d’analyse de texte par un ordinateur. Elles permettent de décrire des enchaînements de caractères d’une complexité suffisamment grande pour être réellement utiles, mais suffisamment faible pour être implémentées efficacement. Elles sont d’une importance capitale pour le théoricien des langages comme pour l’UNIX power user.

Dans cette dépêche, nous :

  • décrivons brièvement la notion abstraite d’expression rationnelle et recensons les implémentations les plus courantes sur un système Unix ;
  • présentons quelques commandes permettant de rechercher des motifs décrits par une expression rationnelle dans un texte, réécrire des fichiers automatiquement ou transformer et analyser des fichiers structurés automatiquement en utilisant des expressions rationnelles ;
  • montrons comment améliorer votre productivité avec Emacs grâce aux expressions rationnelles.

Dans cette dépêche, nous allons nous pencher sur les expressions rationnelles (souvent nommées abusivement expressions régulières suite à une traduction littérale de regular expression). Elles permettent de représenter formellement un motif de recherche, par exemple : un caractère alphabétique majuscule suivi de quatre caractères minuscules, puis deux chiffres et un point à la fin. Les expressions rationnelles représentent un outil puissant pour qui sait les utiliser à bon escient mais nécessitent une phase d’apprentissage non négligeable. La diversité des moteurs et des syntaxes n’aide pas non plus à leur simplicité, et les confusions entre les différents outils peuvent parfois donner des résultats surprenants.

Journal SpiderMonkey et V8 travaillent ensemble

Posté par  . Licence CC By‑SA.
Étiquettes :
46
5
juin
2020

Là, si tu connais ces deux noms, tu te dis que c'est pas possible en fait. Ils doivent bien se connaître, mais travailler ensemble ?

Pour ceux qui découvrent : SpiderMonkey est le moteur JavaScript de Firefox, fait par Mozilla, et V8 celui de Chromium/Chrome, maintenu par Google.

Et il se trouve que oui, il y a des domaines où ils y trouvent un intérêt, les expressions rationnelles : https://hacks.mozilla.org/2020/06/a-new-regexp-engine-in-spidermonkey/

Visiblement, Mozilla a longtemps utilisé une version patchée du moteur (…)

Journal Ligne de commande : les 20 mémos d'un « autodidacte »

Posté par  (site web personnel) . Licence CC By‑SA.
44
4
oct.
2018

Depuis avril 2018 j'ai eu l'occasion de publier sur le Grimoire-Command.es les 20 mémos du précédent secrétaire de Gebull (le LUG de Bressuire).

Les sujets abordés sont variés et représentent quelques décennies de lecture de forum et de tâtonnements, scrupuleusement notés et repris en fiches synthétiques.

Comme le reste du grimoire, ce sont des mémos, des penses-bêtes, pour retrouver rapidement une commande que l'on a déjà utilisée ou aperçue. Comme pour les grimoires de jeux de rôle, il faut donc (…)

Regexcrossword : un subtil mélange de sudoku et de mots croisés, à la sauce Regex

Posté par  (site web personnel) . Édité par ZeroHeure, Benoît Sibaud et Xavier Teyssier. Modéré par patrick_g. Licence CC By‑SA.
Étiquettes :
40
24
jan.
2014
Jeu

C'est vendredi, alors voici de quoi se détendre, ou garder les neurones bien chauds pendant le weekend. Il s'agit d'un petit jeu en ligne dont le but est de retrouver des caractères, en suivant les expressions régulières (ou expressions rationnelles) posées en ligne et en colonne.
La présentation est la même que celle des mots croisés, mais la recherche de la solution tend vers celle appliquée pour la résolution d'une grille de sudoku.

Un exemple simple, issue de l'aide du jeu

Le jeu se découpe en 8 niveaux de difficulté, rassemblant chacun de 5 à 10 grilles.

Bien que les premiers puzzles s'enchaînent facilement, il faut avouer que le dernier niveau présente un défi beaucoup plus corsé, avec une grille de 5×5 caractères à deviner.

Si vous êtes intéressé ou curieux, je vous invite à suivre le lien en bas de dépêche. Bon weekend !

NdM: il s'agit d'un jeu en ligne gratuit dans le but de s'entraîner avec les expressions rationnelles (en anglais regular expressions ou regex). On peut jouer anonymement, mais pour suivre sa progression il faut se connecter avec un compte facebook. Si vous connaissez des alternatives libres de jeux de regexp, faites en part dans les commentaires.

Journal La commande ack, one step beyond grep !

Posté par  (site web personnel) . Licence CC By‑SA.
26
29
nov.
2021

L'URL du site de la commande ack annonce la couleur1 : https://beyondgrep.com/. J'ai l'habitude d’agripper les motifs avec grep, mais je m'essaie depuis quelques temps à les acquérir avec ack 2. Le deuxième et dernier journal sur cette commande datant d'avril 2013 (voir le tag ack), il est temps de faire une piqûre de rappel aux citoyens du libre.

Version 3

En 2019, ack est passée en version 3. La version actuelle est la 3.5.0 (mars (…)

Journal Sortie de Perl 5.14.0

Posté par  (site web personnel) . Licence CC By‑SA.
25
15
mai
2011

Bonjour,

Perl 5.14.0 vient de sortir, au programme (entre autre) :

  • Gestion d'Unicode 6.0 avec plein d'améliorations concernant les fonctionnalités basées sur Unicode.

  • Gestion améliorée d'IPv6

  • L'autoconfiguration du client CPAN s'est simplifiée

  • Un nouveau drapeau /r qui fait des substitutions s/// non destructives

  • Un nouveau drapeau pour les expressions rationnelles pour indiquer si une chaîne marquée doit-être traitée comme du ASCII ou de l'Unicode.

  • Nouvelle syntaxe package Foo { }

  • Utilisation de la mémoire et du CPU réduite

Télécharger : (…)

Journal Vivent les journaux binaires !

Posté par  . Licence CC By‑SA.
16
7
mai
2015

Bonjour cher 'nal,

Comme toi, j'aime systemd, j'aime les jounaux binaires, j'aime la manière facile d'interroger le journal binaire, et j'aime que la machine travaille pour moi.

Faire des regex, c'est long, pas lisible, et chiant. La machine peut faire ça pour moi.

Chercher un symbole avec less, c'est pas pratique quand y'a des doublons.

grep n'est pas pratique sur un grand fichier, et multiplier les fichiers journaux c'est franchement pas génial pour avoir une organisation de ces fichiers bien (…)

Journal Journal Bookmark #1

Posté par  (site web personnel) . Licence CC By‑SA.
15
13
sept.
2014

Dimensions, une extension Chrome permettant de mesurer, en pixels, tous les éléments d'une page web.

Un expérience testant les limites de la commandes cp : que ce passe t-il lorsqu'on copie 432 millions de fichiers totalisant 39 To ?

Morte, une expérience pour faire une sorte de templating (comme ceux de C++) automatique : il regarde ce qui est calculable en fonction des informations dont il dispose dans le code et précompile

Algomation, un site pour visualiser des (…)

Forum Programmation.perl [resolu] regexp qui ne marche pas, enfin pas toujours.

Posté par  .
Étiquettes :
2
6
déc.
2012

le texte que je cherche à nettoyer tout sur une seule ligne, au milieu d'un fichier que je parcours ligne à ligne :

 src="C2_Fr_OIITXD.jpg" pageID="1" width="1651" height="2335" Sender="Moi" Receiver="" Script="" Document_Location="" Category="2a" Document_Date="05/09/2013" Document_Object="Bon de livraison" Language="french" NumPage="2" Receiver_Address="une adresse avec un numero des espaces, des virgules" Receiver_Name="marie ubert" Phone="+33(0)1.22.33.44.55"

le code qui vide les champs
il fait ca avec tous les champs, j'utilise la meme logique sur chacun des champs

if ($_ =~ /(Sender=".*?")/)
 {
   $_=~
(…)

Forum Linux.général Que prendre entre sed et awk ?

Posté par  .
Étiquettes :
2
30
août
2011

Bonjour tout le monde,

je me demande lequel de ces outils, entre sed et awk, est le plus adapté à ce que je veux faire.
Je voudrais prendre sur l'entrée standard (fichier ou par tube) un texte, vérifier chaque mot par des expressions régulières et, selon l'expression trouvée pour le mot, l'entourer par des balises (disons des balises HTML).
La sortie est un fichier texte ou alors la sortie standard.

J'ai lu les articles sed et awk sur Wikipédia (…)

Forum Programmation.shell [réglé] [ZSH] RegExp et Qualifiers ?!

Posté par  (site web personnel) .
Étiquettes :
2
1
juil.
2011

Hello,

Voici un petit problème auquel je suis confronté et j'aimerai avoir votre avis / aide si possible.

Soit une arborescence qui ressemble à ceci:

$ tree -d
.
├── reseau
│   ├── 10.0.0.28
│   │   ├── 2011-07-01
│   ├── 10.0.0.58
│   │   ├── 2011-06-30
│   ├── 10.0.130.10
│   │   ├── 2011-06-30
│   │   ├── 2011-07-01
└── serveurs
    ├── 10.0.128.29
    │   ├── 2011-06-28
    │   ├── 2011-06-29
    │   ├── 2011-06-30
    │   ├── 2011-07-01
    ├── 10.0.128.31
    │   ├── 2011-06-28
    │   ├── 2011-06-29
(…)

Forum Programmation.shell les regex sed dingue comme ce n'est pas facile...

Posté par  .
Étiquettes :
2
25
mai
2011

bonjour,

je veux passer un flux de texte dans divers pipes pour le transformer à l'aide de sed. Ça fait plus de 3/4 d'heure que je lutte avec ça.

J'ai :

du texte et puis à la fin de la ligne, un numéro par exemple 42

je veux obtenir :

du texte et puis à la fin de la ligne, un numéro par exemple [[42 42]]

Dans l'idéal, toutes les lignes qui finissent par un nombre auraient ce nombre transformé (…)

Forum Programmation.autre Renommage de fichier - regex

Posté par  . Licence CC By‑SA.
Étiquettes :
1
10
juil.
2023

Bonjour,

J'aurais besoin de renommer en masse des fichiers.
le nom de fichier est de la forme
text1.00B00.text2.ext

text1 est une chaine de caractère de longueur variable
. un point
00 un chiffre sur 1 ou 2 digit
B la lettre B fixe
00 un chiffre sur 1 ou 2 digit
. un point
text2 est une autre chaine de caractère de longueur variable
.ext l'extension du fichier

le besoin est de remplacer les 2 zones de chiffres par le (…)