【问题标题】:R: gsub inserting whitespaces between capture groupsR:gsub 在捕获组之间插入空格
【发布时间】:2016-05-29 13:03:33
【问题描述】:

我正在拼命尝试在捕获组之间插入空格。我天真的方法是

c = c("WesternSaharaRegion", "ColumbiaState", "OneTwoThreeFourFiveSix")
gsub("(.+[a-z])([A-Z].+)","\\1 \\2", clist, perl=T)

这只是在最后两个大写字母之间插入一个空格。使用

gsub("(?=([a-z][A-Z]))"," ", c, perl = T)

工作不完全是因为它是一个字符移位的版本

"Wester nSahar aRegion"       "Columbi aState"              "On eTw oThre eFou rFiv eSix"

我如何才能优雅地接收

    "Western Sahara Region"       "Columbia State"              "One Two Three Four Five Six"

strsplit() 不幸的是没有保留捕获组:/

【问题讨论】:

    标签: regex r


    【解决方案1】:

    我们可以使用正则表达式查找方法

     gsub('(?<=[a-z])(?=[A-Z])', ' ', c, perl=TRUE)
     #[1] "Western Sahara Region"       "Columbia State"              "One Two Three Four Five Six"
    

    或者使用捕获组

    gsub('([a-z])([A-Z])', '\\1 \\2', c)
    #[1] "Western Sahara Region"       "Columbia State"              "One Two Three Four Five Six"
    

    【讨论】:

    • 吉普,完成。您的回答帮助我最终了解了“环顾四周”,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-10-08
    • 2010-12-18
    • 1970-01-01
    • 2021-01-02
    • 2015-03-07
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    相关资源
    最近更新 更多