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

Langage PHP Discussion :

Regex sur requête d'insert [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 75
    Par défaut Regex sur requête d'insert
    Bonjour,

    Encore assez novice sur la maitrise des regex, quelqu'un pourrait-il m'expliquer comment appliquer une expression regulière afin de pouvoir supprimer le 3 caractère qui se trouve après le
    .
    de
    (32.38')
    ?.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO "COMMANDE" VALUES ('10248', 'VINET', '5', TO_DATE('1996-07-04 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('1996-08-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('1996-07-16 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '3', 32.38');
    INSERT INTO "COMMANDE" VALUES ('10258', 'ERNSH', '1', TO_DATE('1996-07-17 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('1996-08-14 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('1996-07-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '1', 140.51');

    Ps : A noter que je dois interagir sur un fichier de 5000 lignes.
    Merci de votre aide.

  2. #2
    Membre éprouvé Avatar de denissay
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 103
    Par défaut
    En supposant que cette données est tujours à la même place vers la fin de chaque ligne, tu peux utiliser ceci (et tu remplace par un string vide):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (\.)(?=\d+\s*'\s*\)\s*;\s*$)
    DEMO

    Ce regex peut être exmpliqué comme suivant: On cherche un . suivi de chiffres puis de '); à la fin de chacune des lignes (attention au flag m), j'ai rajouté des espaces optionnels \s* pour qu'il soit assez flexibles

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 75
    Par défaut
    Merci pour ta réponse, l'idée n'est pas mal du tout.

    Cependant l'objectif serais dans mon cas de supprimer la simple ' qui se trouve entre deux éléments de recherche.
    voir exemple ci-dessous.
    donc j'imagine qu'il faudrait plutôt lui dire de :
    cherche '
    après le . et deux chiffres
    et avant une ) et ;

    Merci.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     
    $data = <<<EOD
    INSERT INTO "COMMANDE" VALUES ('10248', 'VINET', '5', TO_DATE('1996-07-04 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('1996-08-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('1996-07-16 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '3', 32.38');
    INSERT INTO "COMMANDE" VALUES ('10258', 'ERNSH', '1', TO_DATE('1996-07-17 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('1996-08-14 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('1996-07-23 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '1', 140.51');
    EOD;
     
    echo '<pre>', preg_replace("@,\s*\d+\.\d{2}\K'@", '', $data), '</pre>';
     
    ?>

  5. #5
    Membre confirmé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 75
    Par défaut
    Merci Tisha mais je pense pas pouvoir exécuter ta commande php dans un éditeur comme notepad++.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Désolée, je croyais être dans un forum php

    ,\s*\d+\.\d{2}\K'

  7. #7
    Membre éprouvé Avatar de denissay
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 103
    Par défaut
    Oh, j'avais mal compris, je venais de me reveiller après une nuit assez agitée =D

    Avec une petite modificationd de ma réponse, tu peux utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \d+\s*\K'(?=\s*\)\s*;\s*$)

  8. #8
    Membre confirmé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 75
    Par défaut
    Merci pour ton regex Denissay.

    Cependant j'ai deux ou trois ptites questions.

    - Concernant ton regex celui-ci sélectionne bien la valeur désirer mais ne la supprime pas quand je laisse la valeur à vide dans remplacer.
    - Doit je aussi appliquer un regex pour supprimer cette valeur et quel est ce regex ?.

    Dans un premier temps pourrais tu me l'expliquer ou du moins me le résumer ?. (j'ai passé une bonne partie de ma journée à essayer d'apprendre).

    Merci.

  9. #9
    Membre éprouvé Avatar de denissay
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 103
    Par défaut
    Veux tu bien poster ton code montrant comment tu appliques ce regex ?

    Les explications suivront

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

Discussions similaires

  1. [WD14] Problème sur requête d'insertion
    Par Raptor92 dans le forum WinDev
    Réponses: 5
    Dernier message: 15/09/2009, 18h00
  2. [MySQL] Erreur sur requête INSERT
    Par obito dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 17/07/2008, 17h28
  3. [SQL] erreur sur requête insert
    Par temperature dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/01/2008, 15h27
  4. Erreur sur ma requête d'insertion
    Par souminet dans le forum Bases de données
    Réponses: 14
    Dernier message: 09/01/2008, 09h29
  5. Problème sur requête insert mysql
    Par kcizth dans le forum Requêtes
    Réponses: 5
    Dernier message: 04/02/2006, 18h37

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