提问人:Minh Chau 提问时间:11/14/2023 最后编辑:Minh Chau 更新时间:11/14/2023 访问量:52
删除字符串中某个“短语”后面的字符串的其余部分 (R) [duplicate]
Remove the remainder of a string after a certain 'phrase' in a string (R) [duplicate]
问:
假设我有这个对象
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,但它没有给我想要的输出。
答:
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"
评论