regex - R:在某个字符后大写所有内容

标签 regex r capitalization

我想将第一个 _ 之后的字符向量中的所有内容大写.例如以下向量:

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/

    相关文章:

    PHP 输出中每个单词的首字母大写

    javascript - 试图将字符串数组中的第一个字符大写,为什么这不起作用?

    objective-c - 为什么大写的属性名称在 Objective-C/UITouch 中没有给出错误?

    r - 使用 Window In shiny 调整大小的数据表

    将 SAS sas7bdat 数据读入 R

    r - 如何使用 R 包 'hash' 访问 R 中的整数键

    regex - 如何仅使用 grep/sed 提取子字符串和数字

    regex - PowerShell正则表达式在换行符附近不匹配

    ruby - 这可以在一个正则表达式中完成吗?

    python - 在 Python 中使用正则表达式搜索字符串