如何删除R?
中两个特定模式之间的字母例如
a= "a#g abcdefgtdkfef_jpg>pple"
我想删除#g
和jpg>
a1="apple"
我试图在stringr
中找到一些功能,但我无法
答案 0 :(得分:11)
无需为此操作加载包。您可以使用基本R函数sub
。它用于匹配正则表达式的第一次出现。
a <- "a#g abcdefgtdkfef_jpg>pple"
sub("#g.*jpg>", "", a)
# [1] "apple"
#g
匹配"#g"
.*
匹配除\n
之外的任何字符(零次或多次)jpg>
匹配"jpg>"
所以,我们要从#g
开始删除所有内容,包括jpg>
关于你的评论
我试图在stringR中找到一些函数,但我不能
它实际拼写为stringr
(区分大小写)。您可以使用str_replace
。
library(stringr)
str_replace(a, "#g.*jpg>", "")
# [1] "apple"
答案 1 :(得分:2)
除了前面的答复外,如果您使用看起来像"a#g abcdefgtdkfef_jpg>pple ; #__something_else___jpg>"
的字符串,则其中某些方法将使用诸如"#.*jpg>"
的表达式来对整个字符串进行细分,并且您会得到一个空字符串结果是。为避免这种情况,可以使用R regex "#[^jpg>]+jpg>"
,使您可以更有选择地匹配模式。
答案 2 :(得分:1)
我想添加到Rich的答案中,因为当需要在同一文本中进行多次替换时,它不起作用。
如果要在同一字符串中删除多次,则需要对代码进行一些调整:
a <- "a#g abcdefgtdkfef_jpg>pple
or#g abcdefgtdkfef_jpg>ange
ma#g abcdefgtdkfef_jpg>ngo"
# Code to get the individual fruits
gsub("#g.*?jpg>", "", a)
# Output
# [1] "apple orange mango"