R(正则表达式)

时间:2018-04-21 17:42:18

标签: r regex stringr piping

如何在管道操作中为不包含单词的元素对向量进行子集化? (我真的很喜欢管道)

我希望有某种方式来反转str_subset。在以下示例中,我只想返回x的第二个元素,而不是其中包含hi的元素:

library(stringr)
x <- c("hi", "bye", "hip")
x %>% 
    str_dup(2) %>%  # just an example operation
    str_subset("hi")  # I want to return the inverse of this

1 个答案:

答案 0 :(得分:5)

您可以使用^(?!.*hi)断言不包含hi的字符串;正则表达式使用负前瞻?!并断言字符串不包含模式.*hi

x %>% 
    str_dup(2) %>%  # just an example operation
    str_subset("^(?!.*hi)")  
# [1] "byebye"

或通过撤消str_detect来过滤:

x %>% 
    str_dup(2) %>%  # just an example operation
    {.[!str_detect(., "hi")]}  
# [1] "byebye"