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

use*_*199 7 regex string r

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

例如

a= "a#g abcdefgtdkfef_jpg>pple"
Run Code Online (Sandbox Code Playgroud)

我想删除#g和之间的所有字母jpg>

a1="apple"
Run Code Online (Sandbox Code Playgroud)

我试图找到一些功能,stringr但我不能

Ric*_*ven 13

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

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

正则表达式解释:

  • #g 火柴 "#g"
  • .*匹配除\n(零次或多次)之外的任何字符
  • jpg> 火柴 "jpg>"

所以在这里我们将删除所有内容#g,包括最新内容jpg>


关于你的评论

我试图在stringR中找到一些函数,但我不能

它实际上是拼写的stringr(区分大小写).你可以用str_replace.

library(stringr)
str_replace(a, "#g.*jpg>", "")
# [1] "apple"
Run Code Online (Sandbox Code Playgroud)


Sta*_*eva 1

添加到前面的回复中,如果您使用看起来像 的字符串"a#g abcdefgtdkfef_jpg>pple ; #__something_else___jpg>",其中一些方法将使用类似 的表达式对整个字符串进行子集"#.*jpg>",并且您将得到一个空字符串作为结果。为了避免这种情况,您可以使用 R 正则表达式"#[^jpg>]+jpg>",它允许您更有选择性地匹配模式。