【问题标题】:Camel Case format conversion using regular expressions in R在 R 中使用正则表达式进行骆驼大小写格式转换
【发布时间】:2017-03-11 08:31:06
【问题描述】:

关于 R 中的正则表达式,我有两个相关的问题:
[1]
我想将包含标点符号后跟一个字母的子字符串转换为大写字母。
示例:

Dr_dre to: DrDre  
Captain.Spock to: CaptainSpock  
spider-man to: spiderMan  

[2]
我想将驼峰大小写字符串转换为带有下划线分隔符的小写字符串。
示例:

EndOfFile to: End_of_file  
CamelCase to: Camel_Case  
ABC to: A_B_C  

非常感谢,
卡玛谢

【问题讨论】:

    标签: r regex


    【解决方案1】:

    我们可以使用sub。我们匹配一个或多个标点字符 ([[:punct:]]+),后跟一个字符,该字符被捕获为一组 ((.))。在替换中,捕获组 (\\1) 的反向引用更改为大写 (\\U)。

    sub("[[:punct:]]+(.)", "\\U\\1", str1, perl = TRUE)
    #[1] "DrDre"        "CaptainSpock" "spiderMan"   
    

    对于第二种情况,我们使用正则表达式查找方法,即匹配一个字母 ((?<=[A-Za-z])),后跟一个大写字母,然后替换为 _

    gsub("(?<=[A-Za-z])(?=[A-Z])", "_", str2, perl = TRUE)
    #[1] "End_Of_File" "Camel_Case"  "A_B_C"  
    

    数据

    str1 <- c("Dr_dre", "Captain.Spock", "spider-man")
    str2 <- c("EndOfFile", "CamelCase", "ABC")
    

    【讨论】:

    • 哇!感谢您的及时回复 - 这很有效。你能简要解释一下你正在使用的正则表达式 - 具体来说 - 什么是 '\\U', "?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多