删除字符串中某个“短语”后面的字符串的其余部分 (R) [duplicate]

Remove the remainder of a string after a certain 'phrase' in a string (R) [duplicate]

提问人:Minh Chau 提问时间:11/14/2023 最后编辑:Minh Chau 更新时间:11/14/2023 访问量:52

问:

假设我有这个对象

x <- c('keep this text except remove this part after a certain phrase','keep this part, remove everything after the comma')

我想使用 Stringr 删除 (1) 单词“except”和 (2) 在“,' 之后的所有内容

我想要的 x 输出是:

'keep this text'

'keep this part'

在 R 中有没有办法做到这一点?

我尝试使用 gsub,但它没有给我想要的输出。

R 纵梁 GSUB

评论


答:

2赞 Allan Cameron 11/14/2023 #1

gsub使用正确的正则表达式可以正常工作:

gsub('^(.*)(,| except).*$', '\\1', x)
#> [1] "keep this text" "keep this part"

评论

1赞 Hieu Nguyen 11/14/2023
gsub("(?:\\,|except).*", "", x)
0赞 Minh Chau 11/14/2023
嗨,艾伦,非常感谢您的回复。我还不能投票,因为我刚刚开了这个账户。我道歉!
1赞 jkatam 11/14/2023 #2

或者,请尝试 stringr::str_remove_all

str_remove_all(x,'((?=\\,).*)|((?=except).*)')

[1] "keep this text " "keep this part" 
1赞 GuedesBF 11/14/2023 #3

为了避免复杂的正则表达式,我们可以按顺序删除文本stringr

library(stringr)

x |> 
    str_remove_all(",.*") |>
    str_remove_all(" except.*")

[1] "keep this text" "keep this part"