正则表达式正则表达式-仅连接R中的大写单词
我有以下内容: 拉蓬塔太阳能光伏太阳能5.54 12/27/19 沼气生物技术公司JUSTO DARACT 1.07 1/14/20 我想创建一个正则表达式,将所有大写单词与下划线连接起来,例如: 蓬塔阳光酒店和BIO_JUSTO_DARACT酒店 我怎样才能在R和regex中完成它 谢谢试试这个:正则表达式正则表达式-仅连接R中的大写单词,r,regex,R,Regex,我有以下内容: 拉蓬塔太阳能光伏太阳能5.54 12/27/19 沼气生物技术公司JUSTO DARACT 1.07 1/14/20 我想创建一个正则表达式,将所有大写单词与下划线连接起来,例如: 蓬塔阳光酒店和BIO_JUSTO_DARACT酒店 我怎样才能在R和regex中完成它 谢谢试试这个: vec假设没有任何非大写单词以大写字母结尾,您可以用大写字母包围的任何空格替换下划线: strngs <- c("Solar_pv SOLARES DE LA PUNTA 5.54 12/27
vec假设没有任何非大写单词以大写字母结尾,您可以用大写字母包围的任何空格替换下划线:
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"
>
是否只返回大写单词?如果是这样的话,我们可以使用
gsub(' ', '_', stringr::str_extract(x, '\\b[A-Z]+(?:\\s+[A-Z]+)*\\b'))
#[1] "SOLARES_DE_LA_PUNTA" "BIO_JUSTO_DARACT"
但是,正如其他答案所指出的,如果您只想更改文本的一部分,我们可以使用str_替换为相同的正则表达式
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"
资料
x <- c("Solar_pv SOLARES DE LA PUNTA 5.54 12/27/19",
"Biogas BIO JUSTO DARACT 1.07 1/14/20")