我想将第一个 _
之后的字符向量中的所有内容大写.例如以下向量:
x <- c("NYC_23df", "BOS_3_rb", "mgh_3_3_f")
出来应该是这样的:
"NYC_23DF" "BOS_3_RB" "mgh_3_3_F"
我一直在尝试玩regular expressions ,但我无法做到这一点。任何建议,将不胜感激。
最佳答案
你非常接近:
gsub("(_.*)","\\U\\1",x,perl=TRUE)
似乎工作。您只需要使用
_.*
(下划线后跟零个或多个其他字符)而不是 _*
(零个或多个下划线)...把它分开一点:
_.*
给出与下划线匹配的正则表达式模式 _
后跟任意数量(包括 0)的附加字符; .
表示“任何字符”和 *
表示“前一个元素的零次或多次重复”()
表示这是我们要存储的模式 \\1
在替换字符串中说“插入第一个匹配模式的内容”,即匹配的内容 _.*
\\U
, 结合 perl=TRUE
, 表示“将后面的内容大写”(大写 _
无效;如果我们想在(例如)小写 g 之后大写所有内容,我们需要从存储的模式中排除 g 并包含它在替换模式中: gsub("g(.*)","g\\U\\1",x,perl=TRUE)
) 更多详情请在
?gsub
中搜索“替换”和“大写” (和 ?regexp
有关正则表达式的一般信息)
关于regex - R:在某个字符后大写所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10795334/