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 :

Regex extraire un mot entre deux mot sans prendre les espaces


Sujet :

R

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 604
    Points : 206
    Points
    206
    Par défaut Regex extraire un mot entre deux mot sans prendre les espaces
    Bonjour,

    Je souhaite extraire un mot1 entre deux mots A et B mais je ne voudrais pas prendre les espaces avant et après le mot1.

    Par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    library(stringr)
    pattern <- "(?<=AAA).*(?=BBB)"
    str <- "efiozqjd oqjzpfjz,qkd, qzpdjpqz AAA      bonjour le monde                   BBB  edfeijfiejifdjiq"
    str_match_all(str, pattern)
    résultat attendu: "bonjour le monde". Je suppose qu'il faut utiliser ^\s mais je ne comprends ou je dois le mettre exactement.

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 481
    Points : 836
    Points
    836
    Par défaut
    bonsoir, le plus simple c'est d'utiliser la fonction str_trim

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    library(stringr)
    library(purrr)
    pattern <- "(?<=AAA).*(?=BBB)"
    str <- "efiozqjd oqjzpfjz,qkd, qzpdjpqz AAA      bonjour le monde                   BBB  edfeijfiejifdjiq"
    str_match_all(str, pattern) %>% map(~ str_trim(.x[,1]))
    sinon si tu veux n'utiliser qu' une expression régulière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    library(stringr)
    library(purrr)
    pattern <- "(?<=AAA)\\s+(([a-z]+\\s)+[a-z]+)\\s+(?=BBB)"
    str <- "efiozqjd oqjzpfjz,qkd, qzpdjpqz AAA      bonjour le monde                   BBB  edfeijfiejifdjiq"
    str_match_all(str, pattern) %>%map(~.x[,2])

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

    Informations forums :
    Inscription : Février 2013
    Messages : 604
    Points : 206
    Points
    206
    Par défaut
    Bonjour,

    j'ai oublié de mettre un cas où le mot B est répété, j'ai essayé de rajouter {1} pour indiquer que je prend la premier occurrence mais cela ne change rien , j'ai mis un ? après .* et j'obtiens ce que je souhaitais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    library(stringr)
    library(purrr)
    pattern <- "(?<=AAA).*?(?=BBB)"
    str <- "efiozqjd oqjzpfjz,qkd, qzpdjpqz AAA      bonjour le monde                   BBB   edf   BBB eijfiejifdjiq"
    str_match_all(str, pattern) %>% map(~ str_trim(.x[,1]))
    Merci pour votre aide.

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 481
    Points : 836
    Points
    836
    Par défaut
    bonjour , si tu ne veux que la première occurrence il suffit d'utiliser la fonction str_match()

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 604
    Points : 206
    Points
    206
    Par défaut
    Bonjour,

    J'utilise str_match_all pour analyser sur plusieurs ligne où se retrouve plusieurs fois les patterns AAA X BBB, dont X n'est pas le même mot à chaque fois.

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

Discussions similaires

  1. [XL-2016] Extraire des mots sans doublons
    Par kazannova dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 19/10/2019, 14h40
  2. Réponses: 4
    Dernier message: 09/11/2007, 18h08
  3. Regexp: extraire du texte entre deux balises
    Par moook dans le forum Langage
    Réponses: 11
    Dernier message: 19/06/2007, 18h08
  4. Réponses: 24
    Dernier message: 20/08/2006, 14h08
  5. jointure entre deux requete(sans doublant)
    Par nassu dans le forum Access
    Réponses: 1
    Dernier message: 10/04/2006, 11h26

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