首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用backspace替换模式

用backspace替换模式
EN

Stack Overflow用户
提问于 2017-05-31 22:03:57
回答 2查看 359关注 0票数 1

我有一个包含带有年份(OldLabel)标签的列的数据集,我想创建另一列,它只包含标签,而不包含年份(NewLabel)。我编写了以下代码,但在新标签的末尾留出了一个空格。

代码语言:javascript
复制
data["NewLabel"] <- gsub("20..", "", data$OldLabel)
#removes any part of the OldLabel column that starts with 20 and ends with 2 digits, e.g: 2011 or 2008

有没有办法让gsub用一个后备空间来替换序列,这样它就可以在一年内去掉任何空格?我尝试使用"\\b"作为我的替代文本,但这只是用b代替了它,而不是一个后置空间。

编辑:每一个请求,OldLabel的一个例子就是"Valley Summer 2014",它应该变成"Valley Summer",但在我当前的代码中是"Valley Summer "。但是,也有一些是2012 Valley Summer格式的,所以我不认为在模式中只包含一个空格就足够健壮了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-31 22:13:17

代码语言:javascript
复制
data["NewLabel"] <- gsub("\\s*[0-9]\\s*", "", data$OldLabel)
票数 0
EN

Stack Overflow用户

发布于 2017-05-31 22:08:58

试试这个:

代码语言:javascript
复制
 data["NewLabel"] <- gsub("[ ]{0,1}20[[:digit:]]{2}[ ]{0,1}", "", data$OldLabel)

成对的curley-大括号是重复量词,其范围由一个(精确)或两个(最小和最大)值决定。有关更多详细信息,请参阅?regex。(您不想用退格字符替换它们。)

代码语言:javascript
复制
test <- c("2012 Valley Summer", "Valley Summer 2014")
gsub("[ ]{0,1}20[[:digit:]]{2}[ ]{0,1}", "", test)
#[1] "Valley Summer" "Valley Summer"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44295380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档