[英]Remove the letters between two patterns of strings in R
如何删除R中两个特定模式之间的字母?
例如
a= "a#g abcdefgtdkfef_jpg>pple"
我想删除#g
和jpg>
之间的所有字母jpg>
a1="apple"
我试图在stringr
找到一些函数,但我找不到
无需为此操作加载包。 您可以使用基本 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"
添加到之前的回复中,如果您使用看起来像"a#g abcdefgtdkfef_jpg>pple ; #__something_else___jpg>"
的字符串,其中一些方法将使用类似"#.*jpg>"
的表达式来细分整个字符串,并且结果你会得到一个空字符串。 为避免这种情况,您可以使用 R 正则表达式"#[^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"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.