J'ai ce contenu: p>
"Solar_PV Solares de la Punta 5.54 12/27/19"
"BIOGAS BIO JUSTO DARACT 1.07 1/14/20" P>
Je voudrais créer une regex qui concaténera tous les mots majuscules avec un soulignement, par exemple: p>
Comment puis-je le faire dans R et Regex? P>
merci p>
3 Réponses :
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"
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"
>
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")