Forum Programmation.web Filtrage d'une adresse électronique

Posté par  . Licence CC By‑SA.
Étiquettes :
3
9
déc.
2021

Bonjour,

Avec une expression rationnelle (régulière ?), je cherche à filtrer un tant soit peu des adresses électroniques saisies dans un formulaire. Pour l'instant, je me base sur les RFC 5321 sections 4.1.2 and 4.1.3 + Errata :

email address = local-part@domain ou local-part@address-literal

    local-part = (?:[a-zA-Z0-9!#$%&'*+\-/=?^_\x60{|}~]+(?:\.[a-zA-Z0-9!#$%&'*+\-/=?^_\x60{|}~]+)*)|(?:"[\x20-\x21\x23-\x5B\x5D-\x7E]*")|(?:"(?:\\[\x20-\x7E])*")

    domain = (?:[A-Za-z0-9](?:[A-Za-z0-9\-]*[A-Za-z0-9])?(?:\.[A-Za-z0-9](?:[A-Za-z0-9\-]*[A-Za-z0-9])?)*(?:\.)?)

Pour address-literal, ça devient folklorique, j'ai laissé tomber après avoir tenté un truc pourri du style :

    (?:\[([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-5][0-5]))(?:\.([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-5][0-5]))){3}\])|(?:\[IPv6:[0-9A-F]{1,4}(?::[0-9A-F]{1,4}){7}\])|(?:\[IPv6:(?:[0-9A-F]{1,4}(?::[0-9A-F]{1,4}){0,5})?::(?:[0-9A-F]{1,4}(?::[0-9A-F]{1,4}){0,5})?\])|(?:\[IPv6:[0-9A-F]{1,4}(?::[0-9A-F]{1,4}){5}:([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-5][0-5]))(?:\.([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-5][0-5]))){3}\])|(?:\[IPv6:(?:[0-9A-F]{1,4}(?::[0-9A-F]{1,4}){0,3})?::(?:[0-9A-F]{1,4}(?::[0-9A-F]{1,4}){0,3}:)?([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-5][0-5]))(?:\.([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-5][0-5]))){3}\])|(?:\[[A-Za-z0-9\-]*[A-Za-z0-9]:[\x21-\x5A\x5E-\x7E]+\])

Donc si je me cantonne à local-part@domain, ça donne :

    /^((?:[a-zA-Z0-9!#$%&'*+\-/=?^_\x60{|}~]+(?:\.[a-zA-Z0-9!#$%&'*+\-/=?^_\x60{|}~]+)*)|(?:"[\x20-\x21\x23-\x5B\x5D-\x7E]*")|(?:"(?:\\[\x20-\x7E])*"))@(?:[A-Za-z0-9](?:[A-Za-z0-9\-]*[A-Za-z0-9])?(?:\.[A-Za-z0-9](?:[A-Za-z0-9\-]*[A-Za-z0-9])?)*(?:\.)?)$/

Je (…)

Forum Programmation.autre Expression régulière

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
2
11
fév.
2016

Bonjour, j'ai des fichiers qui contiennent des lignes de la forme

11201509180811G
EUX11_002-2015/09/19 9:23:13.4 0

2015/09/19 15:23:07.0
2015/09/18 8:00:00.0 2015/09/19 8:00:00.0 1

2015/09/19 9:23:13.4 21601.68 21592.96

Dans ces lignes je voudrai d'abord détecter les lignes qui contiennent une date/heure (comme celle-ci 2015/09/18 8:00:00.0).
Ensuite, je veux vérifier que l'heure est bien écrite sur 2 chiffres. Par exemple "9:23:13.4" devrait se transformer en "09:23:13.4". Par contre "2015/09/19 15:23:07.0" ne doit pas se transformer en "2015/09/19 015:23:07.0".

J'imagine que le meilleur outil (…)

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 (…)

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.

Forum Programmation.shell Utiliser la sortie d'une commande comme chaîne de recherche de awk

Posté par  . Licence CC By‑SA.
Étiquettes :
1
23
déc.
2013

Bonjour.

Je cherche à obtenir le "device file" correspondant à un chemin (sur une clé USB, en l'occurrence).

Disons que mon chemin est /media/cle/rep1/rep2/rep3/fichier. (J'ai accès à ça facilement dans Thunar via les actions personnalisées.)

Je veux :

  • extraire /media/cle
  • chercher ça dans /proc/mounts
  • en déduire /dev/sdb1 (par exemple)

Partant de /media/cle, je peux réaliser les étapes 2 et 3 avec awk :

awk '/\/media\/cle/ {print $1}' /proc/mounts

J'arrive à extraire /media/cle avec sed :

echo /media/cle/rep1/rep2/rep3/fichier | sed -e 
(…)

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=".*?")/)
 {
   $_=~
(…)