首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用通配符删除文本子字符串r

使用通配符删除文本子字符串r
EN

Stack Overflow用户
提问于 2019-11-14 01:19:36
回答 1查看 30关注 0票数 0

我想删除几个文本字符串的一部分,它们是向量的一部分。我想删除的实例是#.##oz。其中#是1和9(包括1和9)之间的任意整数。

FoodVector <- c("kraft easy mac cup 2.05oz each", "tuna kit bumble bee 3.05oz each", "lance cheddar cheese wh grain 1.50oz each", "some item 1.0oz")

结果应该是:

代码语言:javascript
复制
[1] kraft easy mac cup each 
[2] tuna kit bumble bee each
[3] lance cheddar cheese wh grain each
[4] some item 1.0oz

对于这种情况,我通常使用gsub()或str-replace()。然而,我无法理解通配符语言。例如

代码语言:javascript
复制
gsub("*.**oz", "", FoodVector)

结果如下:

代码语言:javascript
复制
Error in gsub("*.**", "", FoodVector) : 
  invalid regular expression '*.**', reason 'Invalid use of repetition operators'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-14 01:23:45

可以使用gsub删除单个数字的所有实例,然后删除一个.,然后删除两个数字,最后删除一个空格。

注意:您的描述是介于1和9之间的整数,并且没有提到空格。此解决方案查找0到9之间的数字,并查找一个空格,以便与问题中显示的结果相匹配

代码语言:javascript
复制
gsub('\\d{1}\\.\\d{2}oz ', '', FoodVector)
# [1] "kraft easy mac cup each"           
# [2] "tuna kit bumble bee each"          
# [3] "lance cheddar cheese wh grain each"
# [4] "some item 1.0oz" 

为了解决Rui下面的观点,您可以允许空格在d.ddoz之前或之后

代码语言:javascript
复制
FoodVector <- c(FoodVector, '1.23oz some words', 'more words 3.45oz')

gsub('\\d{1}\\.\\d{2}oz | \\d{1}\\.\\d{2}oz', '', FoodVector)
# [1] "kraft easy mac cup each"           
# [2] "tuna kit bumble bee each"          
# [3] "lance cheddar cheese wh grain each"
# [4] "some item 1.0oz"                   
# [5] "some words"                        
# [6] "more words" 
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58842395

复制
相关文章

相似问题

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