Regex 删除R中两个字符串模式之间的字母

Regex 删除R中两个字符串模式之间的字母,regex,r,string,Regex,R,String,如何删除R中两个特定模式之间的字母 比如说 a= "a#g abcdefgtdkfef_jpg>pple" 我想删除#g和jpg> a1="apple" 我试图在stringr中找到一些函数,但我无法此操作不需要加载程序包。您可以使用基本R功能sub。它用于匹配正则表达式的第一次出现 a <- "a#g abcdefgtdkfef_jpg>pple" sub("#g.*jpg>", "", a) # [1] "apple" 再加上前面的回复,如果您使用的字符串看起来

如何删除R中两个特定模式之间的字母

比如说

a= "a#g abcdefgtdkfef_jpg>pple"
我想删除
#g
jpg>

a1="apple"

我试图在
stringr
中找到一些函数,但我无法

此操作不需要加载程序包。您可以使用基本R功能
sub
。它用于匹配正则表达式的第一次出现

a <- "a#g abcdefgtdkfef_jpg>pple"
sub("#g.*jpg>", "", a)
# [1] "apple"

再加上前面的回复,如果您使用的字符串看起来像
“a#g abcdefgtdkfef_jpg>pple;#uuuu something_uuuujpg>”
,这些方法中的一些会使用表达式将整个字符串细分为
“.*jpg>”
,结果将得到一个空字符串。为了避免这种情况,您可以使用R regex
“#[^jpg>]+jpg>”
,这将允许您更有选择地匹配模式

我想补充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"

a对于严格遵守请求,这将是
“#.*jpg>”
任何关于为什么有人更喜欢
stringr::str_replace()
sub()
?@JoshO'Brien不,但我添加它是因为OP提到他们正在查找
stringr
,并且找不到这方面的函数。我更喜欢regexAh的R码,是的。在这种情况下,很高兴您至少向他们展示了他们并不真正需要
stringr
!您拼错了“stringr”。
[^jpg>]+
不是指*任何文本,而是指
jpg>
序列。这是一种误导性的模式,不应使用。如果您更喜欢
stringr
,还有
str\u replace\u all
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"