IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Modification d'une regex existante


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Par défaut Modification d'une regex existante
    Bonjour,
    A partir du code source d'une page web, celui ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "updi(event,'2017-06-04 16:00 CEST (T+ 0:00)<br>Distances:&nbsp;0.0nm/218.9nm<br><b>Wind:</b> 322&deg; 8.6 kt (<b>TWA 45&deg;</b>)<br><b>Heading:</b> 277&deg;<b>Sail:</b> Jib<br><b>Boat Speed:</b> 5.44 kts','220px')"
    La regex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var expr = /updi\(event\,\'(.*)<br>Distances:&nbsp;(.*)<br><b>Wind:<\/b>(.*)\(<b>TWA(.*);<\/b>\)<br><b>Heading:<\/b>(.*)<b>Sail:<\/b>(.*)<br><b>Boat Speed:<\/b>(.*)','(.*)'\)/gi
    me génère ceci :
    Nom : Capture d’écran 2017-06-08 à 21.00.58.png
Affichages : 114
Taille : 15,5 Ko

    je souhaite la modifier pour quelle affiche ceci :
    Nom : Capture d’écran 2017-06-08 à 21.10.32.png
Affichages : 120
Taille : 11,2 Ko

    Une idée des modifs à effectuer dans la regex ? le reste je peux me débrouiller tout seul

  2. #2
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    En php.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $text = "updi(event,'2017-06-04 16:00 CEST (T+ 0:00)<br>Distances:&nbsp;0.0nm/218.9nm<br><b>Wind:</b> 322&deg; 8.6 kt (<b>TWA 45&deg;</b>)<br><b>Heading:</b> 277&deg;<b>Sail:</b> Jib<br><b>Boat Speed:</b> 5.44 kts','220px')";
    $pattern = "/updi\(event\,\'(\d{4}-\d\d-\d\d)\s(\d\d:\d\d)\s([^(]+)\((.+)\)<br>Distances:&nbsp;([^\/]*)\/(.*)<br><b>Wind:<\/b>(.*)\(<b>TWA(.*);<\/b>\)<br><b>Heading:<\/b>(.*)<b>Sail:<\/b>(.*)<br><b>Boat Speed:<\/b>(.*)','(.*)'\)/msi";
    preg_match_all($pattern,$text,$array);
     for ($i=1;$i<count($array);$i++) {
      print $array[$i][0]."<br/>";
     }

    donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    2017-06-04
    16:00
    CEST 
    T+ 0:00
    0.0nm
    218.9nm
     322° 8.6 kt 
     45°
     277°
     Jib
     5.44 kts
    220px

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    @badaze => tu n'as pas pris en compte l'inversion du format date

    c'est curieux que ta regex te génère directement un table html...
    tu peux nous montrer le code du match ? ou plutôt le replace ?


    Ma version javascript avec un replace
    https://jsfiddle.net/6xeq2e9m/2

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <table>
      <tr id="line">
      </tr>
    </table>
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ (function(){
      chaine= "updi(event,'2017-06-04 16:00 CEST (T+ 0:00)<br>Distances:&nbsp;0.0nm/218.9nm<br><b>Wind:</b> 322&deg; 8.6 kt (<b>TWA 45&deg;</b>)<br><b>Heading:</b> 277&deg;<b>Sail:</b> Jib<br><b>Boat Speed:</b> 5.44 kts','220px')"
     
      reg= /updi\(event,'(\d{4})-(\d{2})-(\d{2})\s([^ ]+)\s([^ ]+)\s\(([^)]+)\)[^\/]+\/(\d+\.\d+nm)[^ ]+\s(\d+&deg;)\s(\d+\.\d+ kt)[^\d]+(\d+&deg;)[^\d]+(\d+&deg;)[^ ]+ ([a-z]+)[^\d]+(\d+\.\d+ kts)/gi;
     
      html=chaine.replace(reg,"<td>$3/$2/$1</td><td>$4</td><td>$5</td><td>$6</td><td>$7</td><td>$8</td><td>$9</td><td>$10</td><td>$11</td><td>$12</td><td>$13</td>")
     
      $('#line').html(html);
     
    })
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    td { border: solid 1px silver ;
      font-family: verdana;
      font-size: 10px;
      background-color: #ffffff;
      padding: 0 2px;
      }
    table {
      border-collapse: collapse;
    }
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    SpaceFrog pose une bonne question. rlelamer, je ne comprends pas vraiment où tu butes étant donné que tu as déjà une regexp fonctionnelle capable d’extraire plus que les infos dont tu as besoin.

    Comme autre approche, il me semble malin de tirer parti des capacités d’analyse de code HTML des navigateurs. Dit simplement, tu crées une <div> et tu lui colles le code HTML. Tu vas récupérer un arbre DOM duquel tu pourras extraire les infos que tu veux en utilisant les méthodes du DOM.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    @spacefrog. Je n'avais même pas vu ! Très beau ton code !!!

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    @badaze => Merci
    Je ne sais pas si il répond à 100% à la demande car certains groupes de capture sont peut être variables...
    c'est juste fait pour l'exemple à partir de string donné.
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modification d'une table existante
    Par marcandre dans le forum Administration
    Réponses: 2
    Dernier message: 24/04/2012, 13h23
  2. [JDialog] Modification dans une fenêtre
    Par cefabien dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 01/10/2003, 13h18
  3. Réponses: 2
    Dernier message: 26/02/2003, 11h47
  4. Erreur lors de modification d'une table
    Par seb.49 dans le forum SQL
    Réponses: 11
    Dernier message: 13/01/2003, 17h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo