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 :

[stringr] Expression Régulière


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut [stringr] Expression Régulière
    Bonjour,

    Je voudrais extraire une donnée issu d'un pdf. La donnée peut se trouver sous trois configurations.
    - la donnée sera toujours encadré par le mot valeur et le caractère (
    - cas 1: la donnée est en deux mots, str1 et str2 dont str2 est passé à la ligne.
    - cas 2: la donnée est en un seul mot.
    - cas 3: la donnée qui est en deux mots sont tous les deux à la ligne

    J'utilise la bibliothèque stringr pour employer des expressions régulière. En utilisant cette expression "(?<=valeur\\s).*?(?=\\s\\()" je n'ai réussi qu'a avoir le cas 2 et 3.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    library(stringr)
     
    c1 <- "rgsef ... fcjzdh valeur str1 
    str2 (dsrge) ... segfs"
    c2 <- "erfgze ... sdgegsf valeur str
    (dgvdfq) ... dfgqefq"
    c3 <- "gvef ... esrfef valeur
    str1 str2 (sretgse) ... sefef "
     
    pattern$action   <- "(?<=valeur\\s).*?(?=\\s\\()"
     
    > str_match_all(c1, pattern$action)
    [[1]]
         [,1]
    > str_match_all(c2, pattern$action)
    [[1]]
         [,1] 
    [1,] "str"
    > str_match_all(c3, pattern$action)
    [[1]]
         [,1]       
    [1,] "str1 str2"

  2. #2
    Membre éprouvé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Juillet 2009
    Messages : 122
    Par défaut
    Bonjour pitchu,

    Par défaut, le point capture tous les caractères sauf le retour à la ligne \n. C'est pour ça que ton expression ne matche pas dans ton premier cas.

    Tu peux changer ce comportement avec l'option dotall de regex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str_match_all(c1, regex(pattern$action, dotall=TRUE))

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    Bonjour,
    merci de votre aide.

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

Discussions similaires

  1. [RegEx] Expression régulières : Balises <SCRIPT>
    Par Gwipi dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2006, 23h25
  2. Expression réguliére
    Par Mad_Max dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 16/09/2003, 18h17
  3. [expression régulière] mon cerveau fait des noeuds..
    Par nawac dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2003, 10h06
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 18h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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