Регулярное выражение Regex - объединяет только заглавные слова в R - PullRequest
0 голосов
/ 13 марта 2020

У меня есть этот контент:

"Solar_pv SOLARES DE LA PUNTA 5.54 27.12.19"
"Биогаз BIO JUSTO DARACT 1.07 1/14/20"

Я бы хотел бы создать регулярное выражение, которое объединит все заглавные слова с подчеркиванием, например:

SOLARES_DE_LA_PUNTA и BIO_JUSTO_DARACT

Как я могу это сделать это в R и регулярное выражение?

Спасибо

Ответы [ 3 ]

1 голос
/ 13 марта 2020

при условии, что ни одно из заглавных слов не заканчивается заглавной буквой, вы можете просто заменить любое пространство, окруженное заглавными буквами, подчеркиванием:

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 голосов
/ 13 марта 2020

Вы хотите вернуть только слова в верхнем регистре? Если это так, используя регулярное выражение из ответа Виктора здесь , мы можем сделать

gsub(' ', '_', stringr::str_extract(x, '\\b[A-Z]+(?:\\s+[A-Z]+)*\\b'))
#[1] "SOLARES_DE_LA_PUNTA" "BIO_JUSTO_DARACT"

Но, как указали другие ответы, если вы хотите изменить только часть текста, которую мы можем использовать str_replace с тем же регулярным выражением

stringr::str_replace(x, "\\b[A-Z]+(?:\\s+[A-Z]+)*\\b", 
         function(m) gsub(" ", "_", m))

#[1] "Solar_pv SOLARES_DE_LA_PUNTA 5.54 12/27/19" 
#[2] "Biogas BIO_JUSTO_DARACT 1.07 1/14/20" 

data

x <- c("Solar_pv SOLARES DE LA PUNTA 5.54 12/27/19", 
       "Biogas BIO JUSTO DARACT 1.07 1/14/20")
0 голосов
/ 13 марта 2020

Попробуйте это:

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"      
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...