-1
votes

Expression régulière regex - concaténate uniquement des mots majuscules dans r

J'ai ce contenu:

"Solar_PV Solares de la Punta 5.54 12/27/19"
"BIOGAS BIO JUSTO DARACT 1.07 1/14/20"

Je voudrais créer une regex qui concaténera tous les mots majuscules avec un soulignement, par exemple:

solares_de_la_punta et bio_justo_daract

Comment puis-je le faire dans R et Regex?

merci


0 commentaires

3 Réponses :


0
votes

Essayez ceci:

vec <- c("Solar_pv SOLARES DE LA PUNTA 5.54 12/27/19", "Biogas BIO JUSTO DARACT 1.07 1/14/20")
gre <- gregexpr("[A-Z][A-Z ]+[A-Z]", vec)
regmatches(vec, gre)
# [[1]]
# [1] "SOLARES DE LA PUNTA"
# [[2]]
# [1] "BIO JUSTO DARACT"
regmatches(vec, gre) <- lapply(regmatches(vec, gre), function(s) gsub(" ", "_", s))
vec
# [1] "Solar_pv SOLARES_DE_LA_PUNTA 5.54 12/27/19"
# [2] "Biogas BIO_JUSTO_DARACT 1.07 1/14/20"      


0 commentaires

1
votes

En supposant qu'aucun des mots non capitalisés se termine par une lettre majuscule, vous ne pouvez simplement substituer à tout espace entouré de lettres majuscules pour un soulignement:

strngs <- c("Solar_pv SOLARES DE LA PUNTA 5.54 12/27/19", "Biogas BIO JUSTO DARACT 1.07 1/14/20")
gsub("([A-Z]) ([A-Z])", "\\1_\\2", strngs)
[1] "Solar_pv SOLARES_DE_LA_PUNTA 5.54 12/27/19"
[2] "Biogas BIO_JUSTO_DARACT 1.07 1/14/20"      
> 


0 commentaires

0
votes

Voulez-vous retourner uniquement les mots majuscules? Si tel est le cas, à l'aide de la regex de La réponse de Wiktor ici Nous pouvons faire

x <- c("Solar_pv SOLARES DE LA PUNTA 5.54 12/27/19", 
       "Biogas BIO JUSTO DARACT 1.07 1/14/20")


0 commentaires