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

R Discussion :

(PRE) Problème Expressions Régulières


Sujet :

R

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 37
    Points : 43
    Points
    43
    Par défaut (PRE) Problème Expressions Régulières
    Bonsoir à tous,
    J'ai beau lire des docs là dessus, je ne comprends toujours pas bien comment fonctionne ces fameuses expressions régulières;
    Mon problème est le suivant, j'ai le texte:
    "mardi : Fabrice (Dispo)"
    "lundi : Josianne (Occ)"
    Je souhaiterais récupérer les prénoms "Fabrice" et "Josianne";

    Quelqu'un peut-il m'aider svp?

    Ps: Si vous connaissez un site où il y a de nombreux exemples je suis preneur. Merci

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2013
    Messages : 75
    Points : 191
    Points
    191
    Par défaut
    pour le lien : http://ciam.inra.fr/r4ciam/node/148


    pour le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ch <- c("mardi : Fabrice (Dispo)", "lundi : Josianne (Occ)")
    gsub(pattern="[[:alpha:]]+ : ([[:upper:]]{1}[[:alpha:]]+) .+","\\1", ch)

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 37
    Points : 43
    Points
    43
    Par défaut
    Merci mamounMob pour votre solution qui fonctionne en l'état mais je suis confronté à un problème;
    En effet, en appliquant votre fonction comme tel il ne se passe rien.
    Pour que ça marche, il faut que je fasse un c("mardi : Fabrice (Dispo)") à la main.
    Or ce texte est dans une variable "fich" obtenue comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fich <- xpathSApply(htmlParse(ListNoms[i]),"//div[contains(@class,...
    Lorsque je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fich <- gsub(pattern="[[:alpha:]]+ : ([[:upper:]]{1}[[:alpha:]]+) .+","\\1", fich)
    Ou en faisant c(fich) comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fich <- gsub(pattern="[[:alpha:]]+ : ([[:upper:]]{1}[[:alpha:]]+) .+","\\1", c(fich))
    Cela ne fonctionne pas.
    Je ne comprends vraiment pas pourquoi, d'autant plus que ça fonctionne "à la main"

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2013
    Messages : 75
    Points : 191
    Points
    191
    Par défaut
    OK,
    il me faudrait un exemple reproductible, même minimal pour comprendre ce qui ne va pas

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 37
    Points : 43
    Points
    43
    Par défaut
    Pas de problème; Voici un bout de mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    library(XML)
    url <- htmlParse("http://www.geny.com/partants-pmu/2014-09-19-vincennes-pmu-prix-cleomede_c655563")
    course <- xpathSApply(url,"//div[contains(@class, 'yui-gc cartoucheCourse')]/div[@class='yui-u first nomReunion']",xmlValue)
    course <- gsub("\t|\n|\r","",course)
    course
    En lançant ce code vous obtiendrez: "vendredi : Vincennes (R4)"
    Maintenant, lorsque j'applique votre solution;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    course <- gsub(pattern="[[:alpha:]]+ : ([[:upper:]]{1}[[:alpha:]]+) .+","\\1", course)
    Je n'ai pas le résultat escompté; ça me donne la même chose: "vendredi : Vincennes (R4)"
    Au lieu de "Vincennes".

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2013
    Messages : 75
    Points : 191
    Points
    191
    Par défaut changer l'espace en caractère de ponctuation
    En exécutant ton code j'obtiens :
    course
    # "vendredi_:_Vincennes_(R4)"

    Du coup le code précédent ne fonctionne plus, puisqu'il y avait des espaces alors qu'ici ce sont des tirets.

    Tu peux essayer avec cette expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gsub(pattern='.+[[:punct:]]{3}([[:upper:]]{1}[[:alpha:]]+)[[:punct:]]{1}.+', replacement='\\1', course)
    [[:punct:]] représente les signes ponctuation

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 37
    Points : 43
    Points
    43
    Par défaut
    Alors là c'est vraiment bizarre!
    Chez moi j'obtiens toujours la même chose à savoir: "vendredi : Vincennes (R4)"
    et non "vendredi_:_Vincennes_(R4)"

    Je ne peux l'expliquer.
    Du coup la modification proposée ne fonctionne pas

  8. #8
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 37
    Points : 43
    Points
    43
    Par défaut
    Si ça peut vous donner un indice supplémentaire:
    Lorsque avec votre précédente solution je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gsub(pattern="[[:alpha:]]+ : ([[:upper:]]{1}[[:alpha:]]+) .+","\\1", "vendredi : Vincennes (R4)")
    j'obtiens bien "Vincennes"

    *Ensuite je rentre la valeur de course "à la main"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    course <- "vendredi : Vincennes (R4)"
    gsub(pattern="[[:alpha:]]+ : ([[:upper:]]{1}[[:alpha:]]+) .+","\\1", course)
    là aussi j'obtiens bien "Vincennes"

    *Mais course venant du xpathSApply puis du gsub
    Alors qu'il vaut bien "vendredi : Vincennes (R4)" quand je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    > course
    [1] "vendredi : Vincennes (R4)"
    >
    Tout est pourtant OK, vu les 2 astérisques précédents;
    Alors il ne me reste plus qu'à appliquer la fonction, ce que je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gsub(pattern="[[:alpha:]]+ : ([[:upper:]]{1}[[:alpha:]]+) .+","\\1", course)
    et là j'obtiens toujours: "vendredi : Vincennes (R4)"

    Voici ce que renvoie la console:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    > url <- htmlParse("http://www.geny.com/partants-pmu/2014-09-19-vincennes-pmu-prix-cleomede_c655563")
    > course <- xpathSApply(url,"//div[contains(@class, 'yui-gc cartoucheCourse')]/div[@class='yui-u first nomReunion']",xmlValue)
    > course <- gsub("\t|\n|\r","",course)
    > course
    [1] "vendredi : Vincennes (R4)"
    > gsub(pattern="[[:alpha:]]+ : ([[:upper:]]{1}[[:alpha:]]+) .+","\\1", course)
    [1] "vendredi : Vincennes (R4)"
    >
    Je suis encore allé plus loin en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    > match("vendredi : Vincennes (R4)", course)
    [1] NA
    Par contre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    > course<-"vendredi : Vincennes (R4)"
    > match(course,"vendredi : Vincennes (R4)")
    [1] 1
    Bref, je n'y comprends absolument rien

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2013
    Messages : 75
    Points : 191
    Points
    191
    Par défaut
    Citation Envoyé par jack-no Voir le message
    Je suis encore allé plus loin en faisant:
    > match("vendredi : Vincennes (R4)", course)
    [1] NA
    Très bien, cela signifie que ce qui est affiché à l'écran est différent de ce qui est stocké dans ta variable 'course'.
    il faut encore essayer cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    library(XML)
    url <- htmlParse("http://www.geny.com/partants-pmu/2014-09-19-vincennes-pmu-prix-cleomede_c655563")
    course <- xpathSApply(url,"//div[contains(@class, 'yui-gc cartoucheCourse')]/div[@class='yui-u first nomReunion']",xmlValue)
     
    gsub(pattern="[[:alpha:]]+[^[:alpha:]]+([[:upper:]]{1}[[:alpha:]]+)[^[:alpha:]].+","\\1", course)
    # "\r\n\t\t\tVincennes"
     
    gsub(pattern='.+[[:punct:]]{3}([[:upper:]]{1}[[:alpha:]]+)[[:punct:]]{1}.+', replacement='\\1', course)
    [1] "Vincennes"
     
    course <- gsub("\t|\n|\r","",course)
    gsub(pattern="[[:alpha:]]+[^[:alpha:]]+([[:upper:]]{1}[[:alpha:]]+)[^[:alpha:]].+","\\1", course)
    # "Vincennes"
    Ici, la seconde instruction fonctionne dès le départ, donc pas besoin de faire 'course <- gsub("\t|\n|\r","",course)'.

    Maintenant si ça ne marche pas, il me faudrait plus d'infos, mais je ne sais plus quoi demander de plus ...

  10. #10
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 37
    Points : 43
    Points
    43
    Par défaut
    Merci mamounMob ça fonctionne!
    Je n'aurais jamais pu y arriver sans ton aide!

    God bless!

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

Discussions similaires

  1. Problème expressions régulières
    Par cottcott dans le forum Langage
    Réponses: 7
    Dernier message: 09/05/2007, 14h29
  2. Réponses: 3
    Dernier message: 20/04/2007, 14h47
  3. Problème expression régulières
    Par LEK dans le forum C#
    Réponses: 2
    Dernier message: 18/04/2007, 11h40
  4. [RegEx] problème expression régulière
    Par H-bil dans le forum Langage
    Réponses: 4
    Dernier message: 13/02/2007, 15h38
  5. Problème expressions régulières
    Par sozie9372 dans le forum Langage
    Réponses: 3
    Dernier message: 07/06/2006, 15h13

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